web-dev-qa-db-fra.com

Les indicateurs du démon Docker sont ignorés

Environnement:

  • OS: debian 8.0.0-AMD64, ubuntu-15.04, 16.04
  • Docker : 1.x.x

Procédure:

J'ai changé /etc/default/docker pour ajouter un registre de menu fixe privé, puis j'ai redémarré le service de menu fixe et finalement essayé d'extraire une image.

$ 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

Une sortie ps ne montre rien à propos de l'environnement 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://

Question:

Selon la documentation de docker, la manière d'utiliser un registre privé consiste à utiliser DOCKER_OPTS dans /etc/default/docker. Pourquoi, après cela, cela ne prend pas effet dans cet environnement?

Remarques:

  • Le nom d'hôte du registre privé est correctement résolu par le DNS.
21
Camilo Silva

Les choses semblent avoir changé dans Ubuntu 16.04 en utilisant docker 1.12.x. Basé sur la mise à jour documentation

Ajouter DOCKER_OPTS="-g /mnt/somewhere/else/docker/ --storage-driver=overlay2" à /etc/default/docker

Editer le fichier /lib/systemd/system/docker.service

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

Puis exécutez:

Sudo systemctl daemon-reload
Sudo systemctl restart docker
8
psychok7

Les systèmes basés sur Systemd ne lisent pas les configurations/etc/default, vous devez les mettre maintenant dans/etc/systemd, voir aussi bug docker bug docker n ° 12926

Il existe maintenant une documentation officielle sur le site Docker, reportez-vous à la section Contrôle et configuration de Docker avec systemd .

Vous ne devriez jamais pirater directement les fichiers de service pour la configuration.

Testé et fonctionne sur les systèmes Arch et Debian - je devais cependant inclure l'option permettant d'ignorer les directives EnvironmentFile obsolètes (voir aussi la référence liée à Docker, mais je ne l'avais pas repéré au début et pensais que ce n'était pas nécessaire):

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

Systemd n'est vraiment pas conçu pour ajouter des options à ExecStart ou à Environment. Le moyen le plus efficace et le plus indépendant de la plate-forme consiste à utiliser le /etc/docker/daemon.jsonfichier de configuration .

Voir:

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

Solution spécifique à Ubuntu pour le registre non sécurisé via DOCKER_OPTS

Parce que...

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

... livré avec ...

$ 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

... (Plus précisément: ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS) vous pouvez faire une approche hybride combinant le [réponses choisies] " Voie recommandée " et l'utilisation de DOCKER_OPTS pour éviter de survoler l'option -H fd:// si vous redéfinissiez 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
1
Bruno Bronosky

J'ai eu un défi similaire. Lorsque j'ai commencé à déplacer certains systèmes d'Ubuntu 14.04 à Ubuntu 16.04. Mon objectif était d'utiliser un fichier de configuration dockerd avec des indicateurs dockerd (DOCKER_OPTS) pour Ubuntu 16.04 (systemd) et Ubuntu 14.04 (Upstart) autres que /etc/docker/daemon.json. J'ai choisi de ne pas utiliser /etc/docker/daemon.json pour la configuration du démon docker car json ne prend pas en charge les commentaires. 

Je voulais qu'une conception systemd utilise un fichier de remplacement, qui ne modifie que les indicateurs dockerd. Il utilise le fichier de configuration Docker systemd par défaut (/lib/systemd/system/docker.service) pour d’autres paramètres Docker. Un autre objectif était de personnaliser systemd sur chaque système après chaque modification ou démarrage.

Cela résout mon défi. Cela peut vous aider.

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
0
Bradley Allen