Docker-Schwarm >> Kann keine Verbindung zu die docker-engine Endpunkt
docker version 1.9.1
swarm version 1.0.1
warum auf Anschluss 3 VMs (bridged-net) zu Schwärmen. "Andockfenster info" zeigt mir alle Knoten
Status pending.
1 von 3 hosts ist manager alle Ausgabe ist von diesem host. Ich weiß nicht, wo zu suchen.
Läuft auf swarm --debug manage token://XXXXX
Ausgabe >>
*INFO[0000] Listening for HTTP addr=127.0.0.1:2375 proto=tcp
DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.38:2375
DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.4:2375
DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.33:2375
Dann
root@ubuntu:~# ps -ef | grep swarm
root 2158 1391 0 12:28 pts/2 00:00:00 swarm join token://xxxxxxx --addr 10.32.1.4:2375
root 2407 1213 0 13:57 pts/1 00:00:00 swarm manage token://xxxxxxx -H 0.0.0.0:4243
root 2413 1391 0 13:57 pts/2 00:00:00 grep --color=auto swarm
Dann
root@ubuntu:~# swarm list token://xxxxxxxxxxx
10.32.1.4:2375
10.32.1.33:2375
10.32.1.38:2375
Dann
root@ubuntu:~# ps -ef | grep docker
root 2330 1 0 12:52 ? 00:00:00 /usr/bin/docker daemon
root 2421 1391 0 14:10 pts/2 00:00:00 grep --color=auto docker
Herzschlag sortiert - im hintergrund ausgeführt wird, überprüft ports, name resolution, "pingbar" geführt vom manager.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den docker-daemon hören kann auf drei verschiedene Arten von Sockel: unix, tcp und fd.
Standardmäßig docker-daemon hört nur auf unix-socket.
Wenn Sie benötigen Zugriff auf den Docker-daemon aus der Ferne, Sie müssen aktivieren Sie die tcp-socket.
Beim erstellen von docker swarm-cluster, Schwarm-manager benötigen Zugriff auf den docker-daemon der Schwarm-agent-Knoten aus der Ferne.
Daher müssen Sie neu konfigurieren Sie die docker-daemon
Fügen Sie die folgende Zeile:
Neu starten docker-daemon
Dadurch die docker-daemon kann aus der Ferne zugegriffen werden.
Referenzen:
Habe ich Hinzugefügt, DOCKER_OPTS Werte in /etc/default/docker
DOCKER_OPTS="-H <>host-IP<>:2375 -H unix:///var/run/docker.Socke"
um genauer zu sein << Host-IP >> ist der gleiche host-IP Bearbeiten Sie Ihre /etc/default/docker-Datei.
Vielleicht hilft es jemand.
Konfiguration-Methoden unterscheiden sich je nach host-OS auf dem Sie laufen Docker.
Sehen Docker-Daemon-Konfiguration Anweisungen (nach unten scrollen finden Sie Ihr host-Betriebssystem):
Docker-Konfiguration Dokumentation
Ich bin mit Red Hat Enterprise Linux 7.2 : daher folgte ich config Anleitung für mein OS bilden den obigen link und Folgendes gemacht:
mkdir /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/docker.conf
Fügen Sie den folgenden, um die Andockfenster.conf-Datei dann speichern.
Flush Verpasst
Neu Starten Docker
Den Schlüssel Zeile der Konfiguration (und wo ich wich leicht aus der Dokumentation) ist:
ExecStart=/usr/bin/docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
Gehen wir durch diese Stück für Stück:
/usr/bin/docker
start aus dem Andockfenster binäredaemon
start des Docker-Daemon-D
start im debug-Modus (nicht erforderlich)-H unix:///var/run/docker.sock
erstellt die Standard-Docker Socket-H tcp://0.0.0.0:2375
erstellt einen tcp-Docker Socket lauscht auf port 2375 für alle Netzwerk-SchnittstellenNach diesen änderungen neu gestartet ich meine docker swarm-Container (und in meinem Fall mein Konsul Behälter) und es lief
docker -H tcp://<IP_OF_SWARM_MASTER>:<PORT_YOU_TOLD_SWARM_MASTER_TO_LISTEN_ON> info
zu sehen war, wenn ich nicht mehr immer dieCannot connect to the docker engine endpoint
Fehler.Für mich gearbeitet, indem Schwarm Arbeitnehmer-service-config
/usr/lib/systemd/system/docker.service
woExecStart
befindet sich diese Zeile:Flush änderungen und starten Sie das Andockfenster:
Aber dieser Ansatz ist nicht geschützt, zusätzliche Sicherheit configs.
Ich müde die Lösungen erwähnt in diesem thread. Editieren von /etc/default/docker hat nicht funktioniert für mich.
Schließlich, was war die Lösung.
Bearbeiten /lib/systemd/system/docker.service-Datei
Suchen Sie die Zeile, die beginnt mit ExecStart und add-H=tcp://0.0.0.0:2375, um es so Aussehen wie
Speichern Sie die Geänderte Datei
Reload der docker-daemon
Starten Sie den container
Testen, ob es funktioniert, indem mit dem folgenden Befehl
Wenn alles in Ordnung ist, unter Befehl sollte wieder eine JSON.
Test aus der Ferne, verwenden Sie den PC-Namen oder die IP-Adresse des Docker-Host.