J'ai changé /etc/default/docker
avec DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"
(la version 1.4.1 de docker dans Ubuntu 14.04), mais cela n'a aucun effet pour moi (je n'écoute pas au port 2375
). Il semble que docker ne lise pas ce fichier de configuration initial car j'ai trouvé que export http_proxy
environnement ne fonctionnait pas trop.
Seul Sudo docker -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -d
fonctionne.
Cela m'a vraiment dérouté!
Selon la documentation de docker , Pour configurer les indicateurs de démon et les variables d’environnement de votre démon Docker, il est recommandé d’utiliser un fichier systemd _ fichier à insérer.
Donc, pour ce cas spécifique, procédez comme suit:
Utilisez la commande Sudo systemctl edit docker.service
pour ouvrir un fichier de substitution pour docker.service
dans un éditeur de texte.
Ajoutez ou modifiez les lignes suivantes en remplaçant vos propres valeurs.
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
Enregistrez le fichier.
Rechargez la configuration systemctl
.
$ Sudo systemctl daemon-reload
Redémarrer Docker:
$ Sudo systemctl restart docker.service
Vérifiez si le changement a été pris en compte en consultant la sortie de netstat
pour confirmer que dockerd
est à l'écoute sur le port configuré.
$ Sudo netstat -lntp | grep dockerd
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
Voir ici pour les versions ultérieures de Debian/Ubuntu qui utilisent systemd.
Ce lien explique comment modifier correctement un fichier unité systemd pour fonctionner avec DOCKER_OPTS: https://github.com/docker/docker/issues/9889
En gros, vous créez un fichier /etc/systemd/system/docker.service.d/docker.conf et vous spécifiez vos remplacements.
J'ai dû faire quelque chose comme ceci dans le fichier susmentionné pour lancer le menu fixe avec la variable d'environnement DOCKER_OPTS dans un environnement systemd:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
Le processus d'installation actuel du menu fixe semble négliger le fichier d'unité systemd.
J'ai eu le même problème.
Ubuntu 14.10 utilise systemd
au lieu de sysv-init/upstart
. Peut-être devriez-vous regarder dans /lib/systemd/system/docker.service
pour changer les options.
Je viens de rencontrer le "même" problème.
J'ai remarqué que toutes les options du/etc/default/docker sont en fait commentées par défaut.
J'ai enlevé le # devant DOCKER_OPTS, redémarré et cela a fonctionné comme prévu.
Je pense que les versions précédentes de docker (1.3) n’avaient pas ces options commentées par défaut, du moins je ne me souviens pas d’avoir dû supprimer le signe #.
En réponse aux commentaires de systemd associés à Ubuntu: Ubuntu 14.04 utilise toujours Upstart. Les modifications apportées à /etc/default/docker
devraient donc avoir l'effet souhaité. Ce n’est que vers 15.04 que Ubuntu a commencé à utiliser systemd par défaut.
Si vous avez Ubuntu 15.04 ou une version ultérieure et que vous avez donc besoin d'utiliser systemd, ou si vous choisissez explicitement d'utiliser systemd avant 15.04, le moyen le plus correct et le plus simple d'obtenir l'effet souhaité de l'OP est d'utiliser un socket TCP: :
/etc/systemd/system/docker.service.d/docker-tcp.conf
Sudo systemctl daemon-reload
Sudo systemctl restart docker
Contenu du fichier:
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --Host=tcp://127.0.0.1:2375
Après avoir vérifié le code source du docker ( config.go et flags.go ), je dirais que les options que vous pouvez transmettre dans $DOCKER_OPTS
sont des options pour docker lui-même et -H
ou --Host
est une option pour docker daemon . Pour résoudre votre problème, vous pouvez modifier le fichier de script d’initialisation utilisé pour y inclure l’option -H
. Par exemple:
/etc/init/docker.conf
en modifiant la ligne d’exécution avec exec "$DOCKER" -H "tcp://127.0.0.1:2375" -H "unix:///var/run/docker.sock" -d $DOCKER_OPTS
./etc/init.d/docker
en modifiant les lignes de départ avec quelque chose comme:Utilisez cette commande:
start-stop-daemon --start --background \
--no-close \
--exec "$DOCKER" \
--pidfile "$DOCKER_SSD_PIDFILE" \
--make-pidfile \
-- \
-H "tcp://127.0.0.1:2375" \
-H "unix:///var/run/docker.sock" \
-d -p "$DOCKER_PIDFILE" \
$DOCKER_OPTS >> \
"$DOCKER_LOGFILE" 2>&1
log_end_msg $?
;;
L'utilisation du fichier platform indépendantdaemon-configuration-file semble beaucoup plus propre.
Ajoutez "hosts"
à votre /etc/docker/daemon.json
(ou /custom/path/to/daemon/config.json
si vous utilisez l'option --config-file
au démarrage de la dockerd
):
{
...
"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"],
...
}
redémarrez le démon:
Sudo systemctl restart docker
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