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://
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?
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
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 ...
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.json
fichier de configuration .
Voir:
cat > /etc/docker/daemon.json <<DOCKERCONFIG
{
"labels": ["foo=bar"],
"insecure-registries": ["mydocker-registry.net:5000"]
}
DOCKERCONFIG
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
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