web-dev-qa-db-fra.com

Définir Docker_Opts en centos

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?

19
Colin Murphy

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.

35
Fabien Balageas

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.

14
Will Dennis

Je ne peux pas croire combien il y a de réponses à cela. Alors en voici un autre pour:

  • CentOS 7.3
  • Version Docker = 17.03.1-ce, Version API = 1.27

Cette réponse est construite sur une combinaison incroyable de cette réponse et cette celle et cette celle -.

  1. Sudo vim /usr/lib/systemd/system/docker.service
  2. insérer "-H tcp: //0.0.0.0: 4243 -H unix: ///var/run/docker.sock"  enter image description here
  3. Sudo systemctl daemon-reload // actualise vos modifications de fichiers ci-dessus
  4. Sudo systemctl docker de redémarrage
  5. netstat -l | grep 4243 // vérifie que le port est ouvert
  6. connectez-vous à votre hôte docker quelque part, comme le plugin Jenkins Docker, c.-à-d. tcp: // [server_ip]: 4243
9
Brian Ogden

Éditer /etc/docker/daemon.json semble être la nouvelle méthode prise en charge.

4
DomQ

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
3
Joseph Mulloy

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
1
Dave Side

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

1
Basav

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!

0
Jiaqi Feng

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?

0
faryang

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

0
Ebrahim Moshaya

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
0
vikas027

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 

0
Kamesh