tag latest hub ubuntu docker debian

ubuntu - latest - docker hub



Banderas del demonio Docker ignoradas (6)

Manera recomendada Docker 17.xx +

Hay varias formas de configurar las banderas de daemon y las variables de entorno para su daemon Docker. La forma recomendada es usar el archivo daemon.json independiente de la plataforma, que se encuentra en /etc/docker/ en Linux de forma predeterminada.

Entonces, para configurar registros inseguros, haga lo siguiente:

  1. Establezca la siguiente bandera en el archivo /etc/docker/daemon.json :

    { "insecure-registries": ["mydocker-registry.net:5000"] }

  2. Reiniciar Docker

    $ sudo systemctl restart docker

¡Más fácil cada vez!

Manera previamente recomendada con Docker 1.12

De acuerdo con la documentación de la ventana acoplable , la forma recomendada de configurar las banderas de daemon y las variables de entorno para su daemon Docker es usar un archivo de acceso directo del sistema .

Entonces, para este caso específico, haga lo siguiente:

  1. Cree un archivo llamado /etc/systemd/system/docker.service.d/private-registry.conf con el siguiente contenido:

    Si no existe, cree el directorio /etc/systemd/system/docker.service.d

    [Service] ExecStart= ExecStart=/usr/bin/dockerd --insecure-registry mydocker-registry.net:5000

  2. Cambios de descarga:

    $ sudo systemctl daemon-reload

  3. Reiniciar Docker:

    $ sudo systemctl restart docker

Voila!

Forma no recomendada

Edite el archivo /lib/systemd/system/docker.service

... [Service] ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS ... EnvironmentFile=-/etc/default/docker ...

Entonces ejecuta

systemctl daemon-reload systemctl restart docker

Verifique que /etc/default/docker esté cargado

ps auxwww | grep docker root 4989 0.8 0.1 265540 16608 ? Ssl 10:37 0:00 /usr/bin/docker -d -H fd:// --insecure-registry

Eso es.

Ambiente:

  • SO : debian 8.0.0-amd64, ubuntu-15.04, 16.04
  • Docker : 1.xx

Procedimiento:

Cambié /etc/default/docker para agregar un registro privado de docker, luego reinicié el servicio de docker y finalmente traté de extraer alguna imagen.

$ cat /etc/default/docker DOCKER_OPTS="--insecure-registry mydocker-registry.net:5000" $ service docker restart $ docker pull mydocker-registry.net:5000/testdb FATA[0000] Error: v1 ping attempt failed with error: Get https://mydocker- registry.net:5000/v1/_ping: dial tcp: lookup mydocker-registry.net: no such host. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry mydocker- registry.net:5000` to the daemon''s arguments. In the case of HTTPS, if you have access to the registry''s CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/mydocker- registry.net:5000/ca.crt

Una salida ps no muestra nada sobre el entorno DOCKER_OPTS var.

$ ps auxwww|grep docker root 6919 0.0 0.1 331076 19984 ? Ssl 10:14 0:00 /usr/bin/docker -d -H fd://

Pregunta:

Según la documentación de la ventana acoplable, la forma de usar un registro privado es a través de DOCKER_OPTS en /etc/default/docker . ¿Por qué, después de hacer eso, no tiene efecto en este entorno?

Notas:

  • El nombre de host del registro privado es resuelto correctamente por el DNS.

Solución específica de Ubuntu para registro inseguro a través de DOCKER_OPTS

Porque...

$ dpkg --list | grep -i docker ii docker.io 1.12.3-0ubuntu4~16.04.2 amd64 Linux container runtime

... se envía con ...

$ cat /etc/systemd/system/multi-user.target.wants/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker EnvironmentFile=-/etc/default/docker ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process [Install] WantedBy=multi-user.target

... (Específicamente: ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS ) puede hacer un enfoque híbrido combinando la ["Respuesta recomendada ] de " forma recomendada "y el uso de DOCKER_OPTS para evitar volar sobre la -H fd:// opción si tuviera que redefinir ExecStart

# The docker.io package doesn''t create a systemd drop-ins directory, so we will $ mkdir -p /etc/systemd/system/docker.service.d $ cat > /etc/systemd/system/docker.service.d/10-insecure-registry.conf <<EOF [Service] Environment="DOCKER_OPTS=--insecure-registry docker.internal:5000" EOF


Las cosas parecen haber cambiado en Ubuntu 16.04 usando la 1.12.x acoplable 1.12.x Basado en la documentación actualizada.

Agregue DOCKER_OPTS="-g /mnt/somewhere/else/docker/ --storage-driver=overlay2" a /etc/default/docker

Edite el archivo /lib/systemd/system/docker.service

... [Service] ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS ... EnvironmentFile=-/etc/default/docker ...

Luego ejecuta:

sudo systemctl daemon-reload sudo systemctl restart docker


Los sistemas basados ​​en Systemd no leen las configuraciones predeterminadas de / etc /, usted tiene que ponerlos en / etc / systemd ahora, vea también bug docker bug # 12926

Ahora hay una documentación oficial en el sitio de Docker, consulte Control y configuración de Docker con systemd .

Nunca debe hackear directamente los archivos de servicio para la configuración.

Probado y funciona en sistemas basados ​​en Arch y Debian. Sin embargo, tuve que incluir la opción de ignorar las directivas obsoletas de EnvironmentFile (vea también la referencia de Docker vinculada, pero no la detecté al principio y pensé que no era necesaria):

-EnvironmentFile=/etc/default/docker ExecStart= ExecStart=/usr/bin/docker daemon ...


Systemd realmente no está diseñado para agregar opciones a ExecStart o Environment. La mejor forma, y ​​también la más independiente de la plataforma, es usar el archivo de configuración /etc/docker/daemon.json .

Mirad:

cat > /etc/docker/daemon.json <<DOCKERCONFIG { "labels": ["foo=bar"], "insecure-registries": ["mydocker-registry.net:5000"] } DOCKERCONFIG


Tuve un reto similar. Cuando comencé a buscar comenzar a mover algunos sistemas de Ubuntu 14.04 a Ubuntu 16.04. Mi objetivo era usar un archivo de configuración dockerd con indicadores dockerd (DOCKER_OPTS) para Ubuntu 16.04 (systemd) y Ubuntu 14.04 (Upstart) distintos de /etc/docker/daemon.json. Elegí no usar /etc/docker/daemon.json para la configuración del daemon docker porque json no admite comentarios.

Quería un diseño de sistema para usar un archivo de anulación, que solo modifica las marcas de dockerd. Utiliza el archivo de configuración predeterminado de systemd de Docker (/lib/systemd/system/docker.service) para otras configuraciones de Docker. Otro objetivo era personalizar systemd en cada sistema después de cada cambio o arranque.

Resuelve mi reto. Te puede ayudar.

https://github.com/BradleyA/docker-scripts/tree/master/dockerd-configuration-options

git clone https://github.com/BradleyA/docker-scripts cd docker-scripts/dockerd-configuration-options