registrarse pricing imagenes hub docker boot2docker docker-registry

pricing - Usando registro privado alojado en docker



imagenes de docker (7)

  1. Registre una clave SSL desde https://letsencrypt.org/ Si necesita más instrucciones, consulte este enlace .

  2. Habilitar SSL para nginx. Atención a la parte SSL en el código a continuación, después de registrar la clave SSL, tiene fullchain.pem , privkey.pem , dhparam.pem usándola para nginx para habilitar SSL.

`

server { listen 443; server_name docker.mydomain.com; # SSL ssl on; ssl_certificate /etc/nginx/conf.d/fullchain.pem; ssl_certificate_key /etc/nginx/conf.d/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/conf.d/dhparam.pem; ssl_ciphers ''EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH''; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age=15768000; # disable any limits to avoid HTTP 413 for large image uploads client_max_body_size 0; # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) chunked_transfer_encoding on; location /v2/ { # Do not allow connections from docker 1.5 and earlier # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents if ($http_user_agent ~ "^(docker//1/.(3|4|5(?!/.[0-9]-dev))|Go ).*$" ) { return 404; } # To add basic authentication to v2 use auth_basic setting plus add_header auth_basic "registry.localhost"; auth_basic_user_file /etc/nginx/conf.d/registry.password; add_header ''Docker-Distribution-Api-Version'' ''registry/2.0'' always; proxy_pass http://docker-registry; proxy_set_header Host $http_host; # required for docker client''s sake proxy_set_header X-Real-IP $remote_addr; # pass on real client''s IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900; } }

Resuelve mi problema, espera que te ayude.

Estoy alojando mi propio registro acoplable en un contenedor acoplable. Está liderado por nginx que se ejecuta en un contenedor separado para agregar autenticación básica. Verificando las rutas de _ping puedo ver que nginx está enrutando apropiadamente. Al llamar al docker login de docker login desde boot2docker (en Mac OSX), aparece este error:

FATA [0003] Respuesta de error del demonio: Punto de registro no válido https://www.example.com:8080/v1/ : Obtenga https://www.example.com:8080/v1/_ping : x509: certificado firmado por desconocido autoridad. Si este registro privado solo admite HTTP o HTTPS con un certificado de CA desconocido, agregue --insecure-registry www.example.com:8080 a los argumentos del daemon. En el caso de HTTPS, si tiene acceso al certificado de CA del registro, no necesita la bandera; simplemente coloque el certificado de CA en /etc/docker/certs.d/www.example.com:8080/ca.crt

Lo cual es extraño, porque es un certificado CA SSL válido. He intentado agregar --insecure-registry en EXTRA-ARGS según estas instrucciones: https://github.com/boot2docker/boot2docker#insecure-registry pero inicialmente el archivo ''perfil'' no existe. Si lo creo, y añado

EXTRA_ARGS="--insecure-registry www.example.com:8080"

No veo ninguna mejora. Quería aislar el ejemplo y así intenté docker login en la ventana docker login desde una máquina virtual de ubuntu (no boot2docker). Ahora me sale un error diferente:

Error response from daemon:

El registro de la ventana acoplable se ejecuta directamente desde el hub público, por ejemplo,

docker run -d -p 5000:5000 registry

(Tenga en cuenta que las rutas nginx de 8080 a 5000). Cualquier ayuda y / o recursos para ayudar a depurar esto serían muy apreciados.

ACTUALIZAR

Estaba buscando una guía para ayudar a resolver este problema de manera integral. Específicamente:

  • Crear un registro privado
  • Asegurar el registro con autenticación básica.
  • Usa el registro de boot2docker

He creado el registro y probado localmente, funciona. He asegurado el registro con nginx agregando autenticación básica.

El problema ahora es usar el registro de dos tipos de clientes:

1) Cliente no boot2docker. Una de las respuestas a continuación ayudó con esto. Agregué la marca --insecure-registry a las opciones en / etc / default / docker y ahora puedo hablar con mi registro remoto de docker. Sin embargo, esto no es compatible con autenticación, ya que el inicio de sesión de la ventana acoplable recibe un error:

2015/01/15 21:33:57 HTTP code 401, Docker will not send auth headers over HTTP.

Entonces, si quiero usar auth, necesitaré usar HTTPS. Ya tengo este servidor sirviendo a través de HTTPS, pero eso no funciona si configuro --insecure-registry. Parece que hay un problema de confianza del certificado, que estoy seguro de que puedo resolver en non-boot2docker pero ...

2) Para un cliente boot2docker, ¿no puedo hacer que --insecure-registry funcione o que los certificados sean confiables?

ACTUALIZACIÓN 2

Después de esta pregunta de intercambio de pila , logré agregar la ca a mi VM de Ubuntu y ahora puedo usarla desde un cliente que no sea boot2docker. Sin embargo, todavía hay un montón de comportamiento extraño.

Aunque mi usuario actual es miembro del grupo docker (por lo que no tengo que usar sudo) ahora tengo que usar sudo o recibo el siguiente error al intentar iniciar sesión o extraer de mi registro privado

user@ubuntu:~$ docker login example.com:8080 WARNING: open /home/parallels/.dockercfg: permission denied parallels@ubuntu:~$ docker pull example.com:8080/hw:1 WARNING: open /home/parallels/.dockercfg: permission denied

Y cuando ejecuto contenedores extraídos de mi registro privado por primera vez, tengo que especificarlos por ID de imagen, no por su nombre.


A partir de la versión 1.3.1 de Docker, si su registro no admite HTTPS, debe agregarlo como un registro inseguro. Para boot2docker, esto es un poco más complicado de lo habitual. Consulte: https://github.com/boot2docker/boot2docker#insecure-registry

Los comandos relevantes son:

$ boot2docker init $ boot2docker up $ boot2docker ssh $ echo ''EXTRA_ARGS="--insecure-registry <YOUR INSECURE HOST>"'' | sudo tee -a /var/lib/boot2docker/profile $ sudo /etc/init.d/docker restart

Si desea agregar certificados SSL a la instancia de boot2docker, va a ser algo similar (boot2docker ssh seguido de sudo).


Edita el archivo docker

sudo vim /etc/default/docker

Añade el DOCKER_OPTS

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=www.example.com:8080"

Reiniciando el servicio docker

sudo service docker restart


Ejecuta el siguiente comando:

boot2docker ssh "echo $''EXTRA_ARGS=/"--insecure-registry <YOUR INSECURE HOST>/"'' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"


Intenta ejecutar el demonio con los argumentos:

docker -d --insecure-registry="www.example.com:8080"

en lugar de establecer EXTRA_ARGS


La versión de Docker> 1.3.1 se comunica a través de HTTPS de forma predeterminada al conectarse al registro de la ventana acoplable

Si está utilizando Nginx para proxy_pass al puerto 5000 donde el registro de la ventana acoplable está escuchando, deberá terminar la conexión SSL del cliente de la ventana acoplable al registro de la ventana acoplable en el servidor web / LB (Nginx en este caso). Para verificar si Nginx está terminando la conexión SSL, use cURL https://www.example.com:8081/something donde 8081 es otro puerto configurado para probar el certificado SSL.

Si no le importa si su cliente docker se conecta al registro a través de HTTP y no a través de HTTPS, agregue

OPCIONES = "- inseguro-registro www.ejemplo.com:8080"

en / etc / sysconfig / docker (o equivalente en otras distribuciones) y reinicie el servicio de docker.

Espero eso ayude.


Para ubuntu, modifique el archivo / etc / default / docker

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=10.27.19.230:5000"

Para rehl, modifique el archivo / etc / sysconfig / docker

other_args="--insecure-registry 10.27.19.230:5000"