it-swarm.com.de

Legen Sie Docker_Opts in Centos fest

Ich muss das Docker-Gerät so einstellen, dass es auf meinem Host-Rechner, auf dem Amazon Linux (Centos) läuft, TCP/0.0.0.0/4243 hört. Die gesamte Dokumentation, die ich gesehen habe, hat mir gesagt, den folgenden Befehl auszuführen

echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker

Damit werden die korrekten Docker_opts in/etc/default/docker geschrieben. Ich habe das getan, aber wenn ich Docker neu starte, hört es nicht auf 127.0.0.1

Ich kann Docker korrekt ausführen, indem ich schreibe 

Sudo /usr/bin/docker -H tcp://0.0.0.0:4243 -d &

Das funktioniert, aber ich möchte, dass die Standardoption auf tcp: //0.0.0.0: 4243 gehört wird, ohne dass es jedes Mal angegeben werden muss. 

Es scheint, dass Docker meine/etc/default/docker-Datei vollständig ignoriert, so dass die Einstellungen ignoriert werden. Ich habe auch versucht, die Datei in /etc/default/docker.io und/etc/default/docker-io zu schreiben (habe nicht wirklich erwartet, dass viel passiert).

Ich muss Docker mit gerade anfangen können 

service docker start

oder es wird zu Problemen in meinem aktuellen Bereitstellungsspielbuch führen.

Irgendwelche Gedanken, was ich tun kann, um DOCKER_OPTS einzustellen, und nicht jedes Mal, wenn ich das Docker neu starte?

19
Colin Murphy

In RHEL7 können Sie statt der Datei für die docker.service-Einheit auch nur die Datei/etc/sysconfig/docker bearbeiten:

# /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

und starten Sie Ihren Docker-Dienst neu.

Dies ist für mich zuverlässiger als das Ändern des Dienstskripts.

35
Fabien Balageas

Für CentOS 7 (RHEL 7):

Suchen Sie die Einheitendatei systemd docker.service. Meiner befindet sich in: /usr/lib/systemd/system/docker.service

Bearbeiten Sie in dieser Datei die Zeile im Abschnitt [Service], die mit ExecStart= beginnt. Fügen Sie den "-H tcp://0.0.0.0:4243" in die Zeile ein. (Beachten Sie, dass zwischen der -H und der IP-Adresse kein "=" steht, wie in der obigen Beispielzeile für DOCKER_OPTS.)

Auf meinem System sieht der gesamte Inhalt von docker.service folgendermaßen aus:

[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

(Ich brauche nur Docker, um den Loopback anstelle aller IP-Adressen anzuhören.)

Nachdem Sie diese Datei in der systemd-Einheitendatei bearbeitet und den Docker-Dienst über systemctl restart docker neu gestartet haben, sehe ich den folgenden Vorgang:

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

Wie Sie sehen, wird nun die konfigurierte TCP -Adresse überwacht und bleibt auch nach Neustarts und Dienststopps erhalten.

14
Will Dennis

Ich kann nicht glauben, wie viele Antworten es dafür gibt. Also hier ist noch einer für:

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

Diese Antwort basiert auf einer unglaublichen Kombination aus dieser Antwort und dieser Eins und dieser Eins .

  1. Sudo vim /usr/lib/systemd/system/docker.service
  2. füge "-H tcp: //0.0.0.0: 4243 -H unix: ///var/run/docker.sock" ein  enter image description here
  3. Sudo systemctl daemon-reload // Aktualisieren Sie Ihre Dateiänderungen
  4. Sudo systemctl Docker neu starten
  5. netstat -l | grep 4243 // prüfen, ob der Port geöffnet ist
  6. stellen Sie eine Verbindung zu Ihrem Docker-Host her, z. B. Jenkins Docker Plugin, d. h. tcp: // [server_ip]: 4243
9
Brian Ogden

Die Bearbeitung von /etc/docker/daemon.json scheint der neue unterstützte Weg zu sein.

4
DomQ

Mit Docker 1.7.1 auf CentOS 7 funktionierte weder das Ändern von /usr/lib/systemd/system/docker.service noch /etc/sysconfig/docker für mich. Es scheint, dass in systemd das Socket eingerichtet wird. Um die Gruppe zu ändern, müssen Sie SocketGroup in /usr/lib/systemd/system/docker.socket bearbeiten.

[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

Ich musste die Standard-Bridge-Schnittstelle docker0 ändern, um meine eigene Bridge-Schnittstelle br0 zu verwenden und den folgenden Inhalt in diese Datei zu setzen, wodurch mein Problem gelöst wurde:

CentOS 7.2 und Docker 1.10.3

/usr/lib/systemd/system/docker.service.d/docker.conf

[Service] 
ExecStart=
ExecStart=/usr/bin/docker daemon --bridge=br0 -H fd://

und natürlich müssen die folgenden Schritte ausgeführt werden:

Sudo systemctl daemon-reload

Sudo systemctl restart docker 

ip link del docker0
1
Dave Side

Ich denke bei CentOS, Sie können versuchen, die Optionen wie folgt einzustellen in der Datei/etc/sysconfig/docker

other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

Starten Sie dann das Docker erneut und überprüfen Sie mit, ob der Port geöffnet wird 

netstat -plt | grep 4243 

Dies sollte aufgelistet werden, wenn Sie zuhören

1
Basav

Ich arbeite an Centos 7.

Ich möchte einfach insecure-registry in der Docker-Konfigurationsdatei hinzufügen, dann habe ich "DOCKER_OPTS = - insecure-registry = ...." in/etc/sysconfig/docker geändert, während es nicht funktioniert hat. 

Während ich in der Config ein INSECURE_REGISTRY gesehen habe, habe ich diese Variable geändert und es funktioniert! 

Also denke ich, dass DOCKER_OPTS hier nicht funktioniert! 

Aber es funktionierte auf meiner 14 unguntu!

Es ist wirklich frustrierend, wenn man Docker benutzt!

0
Jiaqi Feng

1 、 Bearbeiten Sie /usr/lib/systemd/system/docker.service, um zwei Parameter im Serviceabschnitt hinzuzufügen:

# vim /usr/lib/systemd/system/docker.service

[Bedienung]

ExecStart =

ExecStart =/usr/bin/dockerd -H tcp: //0.0.0.0: 2375 -H Unix: //var/run/docker.sock

2. Laden Sie die Konfiguration neu und starten Sie das Andockfenster erneut.

# systemctl daemon-reload
# systemctl restart docker

3, um zu überprüfen, ob der Erfolg die folgende Antwort zurückgibt。

# ps -ef|grep docker

wurzel 26208 1 0 23:51? 00:00:00/usr/bin/dockerd -H tcp: //0.0.0.0: 2375 -H unix: //var/run/docker.sock

referenz von Offenlegen Sie die Docker Remote API auf Centos 7?

0
faryang

Basierend auf 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

Ich glaube, dass sich die Dinge jetzt geändert haben - diese Die Antwort von Brian Ogden hatte früher für mich gearbeitet, arbeitete aber heute nicht in meiner Umgebung, wahrscheinlich mit den aktualisierten Versionen von Docker, Kernel und Betriebssystem.

CentOS 7.4.1708 (on AWS)
Docker 17.03.2-ce
API 1.27

Dies hat nach wenigen Treffern und Versuchen funktioniert. Ich konnte es nirgendwo dokumentiert finden.

Ersetzen Sie in der Datei /etc/systemd/system/docker.service.d/execstart.conf die letzte ExecStart (es gibt zwei) durch unten

ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock

Nun sehen meine Dateien so aus

# 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
#

Sobald die obige Datei geändert wurde, führen Sie einfach den folgenden Befehl aus, um die Änderungen zu aktivieren.

# systemctl daemon-reload && systemctl stop docker && rm -f /var/run/docker.sock && systemctl start docker

Um zu überprüfen, ob alles einwandfrei funktioniert, können Sie einen oder alle der folgenden Befehle ausführen

# 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

Es funktionierte für mich, als ich folgte, wie es in den obigen Beiträgen mit Drop-In-Ersetzungsdateien angezeigt wurde: /etc/systemd/system/docker.service.d 

0
Kamesh