J'ai besoin de configurer docker pour qu'il écoute tcp: //0.0.0.0/4243 sur ma machine hôte exécutant Amazon linux (centos). Toute la documentation que j'ai vue m'a dit de lancer la commande suivante
echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker
Ce qui écrira le bon docker_opts dans/etc/default/docker. Je l'ai fait, mais lorsque je redémarre le menu fixe, il n'écoute pas 127.0.0.1
Je peux faire fonctionner Docker correctement en tapant
Sudo /usr/bin/docker -H tcp://0.0.0.0:4243 -d &
Cela fonctionne, mais je veux que l'option par défaut soit à l'écoute sur tcp: //0.0.0.0: 4243 sans avoir à le spécifier à chaque fois.
Il semble que docker ignore complètement mon fichier/etc/default/docker, de sorte que les paramètres sont ignorés. J'ai aussi essayé d'écrire le fichier dans /etc/default/docker.io et/etc/default/docker-io (je ne m'attendais pas à grand-chose)
J'ai besoin de pouvoir démarrer docker avec juste
service docker start
ou cela causera des problèmes dans mon classeur de déploiement actuel.
Avez-vous des idées sur ce que je peux faire pour définir DOCKER_OPTS et ne pas avoir à le faire à chaque fois que je relance docker?
Dans RHEL7, au lieu de modifier votre fichier d'unité docker.service, vous pouvez simplement modifier votre fichier/etc/sysconfig/docker:
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS=--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:4243
puis redémarrez votre service de menu fixe.
Pour moi, cela est plus fiable que de modifier le script de service.
Pour CentOS 7 (RHEL 7):
Recherchez le fichier d'unité systemd docker.service. Le mien est situé à: /usr/lib/systemd/system/docker.service
Dans ce fichier, éditez la ligne dans la section [Service] commençant par ExecStart=
. Ajoutez le "-H tcp://0.0.0.0:4243
" dans la ligne. (remarquez qu'il n'y a pas de "=" entre -H et l'adresse IP, comme dans l'exemple de ligne DOCKER_OPTS ci-dessus.)
Sur mon système, tout le contenu de docker.service
ressemble alors à:
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
[Install]
Also=docker.socket
(Je n'ai besoin que de Docker pour écouter le bouclage, au lieu de toutes les adresses IP.)
Après avoir effectué cette modification dans le fichier d'unité systemd et redémarré le service Docker via systemctl restart docker
, je vois le processus suivant:
root 8574 0.0 0.2 321708 10564 ? Ssl 00:42 0:00 /usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// --selinux-enabled
Comme vous pouvez le constater, il écoute maintenant l'adresse configurée TCP et persistera lors des redémarrages et des arrêts/redémarrages du service.
Je ne peux pas croire combien il y a de réponses à cela. Alors en voici un autre pour:
Cette réponse est construite sur une combinaison incroyable de cette réponse et cette celle et cette celle -.
Éditer /etc/docker/daemon.json
semble être la nouvelle méthode prise en charge.
Avec Docker 1.7.1 sur CentOS 7, ni la modification de /usr/lib/systemd/system/docker.service
ni de /etc/sysconfig/docker
n'a fonctionné pour moi. Il semble que dans systemd configure le socket, donc pour changer le groupe, vous devez éditer SocketGroup dans /usr/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=jenkins
[Install]
WantedBy=sockets.target
J'avais besoin de changer l'interface de pont par défaut docker0 pour utiliser ma propre interface de pont br0 et de mettre le contenu suivant dans ce fichier a résolu mon problème:
CentOS 7.2 et docker 1.10.3
/usr/lib/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --bridge=br0 -H fd://
et bien sûr, les tâches suivantes doivent être effectuées après:
Sudo systemctl daemon-reload
Sudo systemctl restart docker
ip link del docker0
Je pense que sur CentOS, vous pouvez essayer de définir les options ci-dessous dans le fichier/etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
Puis redémarrez le menu fixe et essayez de vérifier si le port est ouvert en utilisant
netstat -plt | grep 4243
Cela devrait énumérer si vous écoutez
Je travaille sur centos 7.
Je veux juste ajouter insecure-registry dans le fichier de configuration de docker, puis j'ai changé "DOCKER_OPTS = - insecure-registry = ...." dans/etc/sysconfig/docker alors que cela ne fonctionnait pas.
Bien que j'ai vu un INSECURE_REGISTRY dans la configuration, j'ai donc changé cette variable et ça marche!
Donc je suppose que DOCKER_OPTS ne fonctionne pas ici!
Mais cela a fonctionné sur mon unbuntu 14!
C'est vraiment frustrant d'utiliser docker!
1/éditez /usr/lib/systemd/system/docker.service pour ajouter deux paramètres dans la section service:
# vim /usr/lib/systemd/system/docker.service
[Un service]
ExecStart =
ExecStart =/usr/bin/dockerd -H tcp: //0.0.0.0: 2375 -H unix: //var/run/docker.sock
2 、 rechargez la configuration, puis redémarrez le menu fixe
# systemctl daemon-reload
# systemctl restart docker
3 、 pour vérifier le succès, voyez si la réponse suivante est renvoyée
# ps -ef|grep docker
root 26208 1 0 23:51? 00:00:00/usr/bin/dockerd -H tcp: //0.0.0.0: 2375 -H unix: //var/run/docker.sock
référence de Exposer l'API Docker Remote sur Centos 7?
Basé sur https://docs.docker.com/engine/admin/configuring/
Sudo mkdir /etc/systemd/system/docker.service.d
Sudo vi /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -D -H tcp://127.0.0.1:4243
Sudo systemctl daemon-reload
Sudo systemctl restart docker
Je crois que les choses ont changé maintenant, ceci réponse de Brian Ogden avait déjà fonctionné pour moi, mais ne fonctionnait pas sur mon environnement aujourd'hui, probablement avec les versions mises à jour du menu fixe, du noyau et du système d'exploitation.
CentOS 7.4.1708 (on AWS)
Docker 17.03.2-ce
API 1.27
C'est ce qui a fonctionné après quelques succès et essais. Je ne pouvais pas le trouver documenté nulle part.
Dans le fichier /etc/systemd/system/docker.service.d/execstart.conf
, remplacez la dernière ExecStart
(il y en a deux) par ci-dessous
ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
Maintenant, mes fichiers ressemblent à ceci
# cat /etc/systemd/system/docker.service.d/execstart.conf
[Service]
Restart=always
StartLimitInterval=0
RestartSec=15
ExecStartPre=-/sbin/ip link del docker0
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
Une fois, le fichier ci-dessus est modifié, il suffit d’exécuter la commande ci-dessous pour activer les modifications.
# systemctl daemon-reload && systemctl stop docker && rm -f /var/run/docker.sock && systemctl start docker
Pour vérifier si tout fonctionne correctement, vous pouvez exécuter n'importe laquelle des commandes ci-dessous.
# systemctl status docker.service | grep tcp
├─21812 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# netstat -an | grep 4243
tcp6 0 0 :::4243 :::* LISTEN
#
# ps aux | grep [4]243
root 21812 1.0 0.8 1017512 67876 ? Ssl 15:11 0:06 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# docker -H :4243 info
Cela a fonctionné pour moi lorsque j'ai suivi la façon dont il apparaît dans les publications ci-dessus avec des fichiers de remplacement insérés dans: /etc/systemd/system/docker.service.d