wake-up-neo.net

docker swarm init konnte keinen IP-Adressfehler auswählen

Experimentieren mit Docker Swarm mit Docker Desktop für Mac. Ich habe es versucht:

docker-machine create -d virtualbox node-1
docker-machine create -d virtualbox node-2
docker-machine create -d virtualbox node-3

eval $(docker-machine env node-1)

docker swarm init \
    --secret my-secret \
    --auto-accept worker \
    --listen-addr $(docker-machine ip node-1):2377

Der letzte Befehl (docker swarm init) gibt diesen Fehler zurück:

Fehlerantwort vom Dämon: Es konnte keine IP-Adresse für die Ankündigung ausgewählt werden, da dieses System mehrere Adressen hat

Ich habe keine Ahnung, was los ist. Hat jemand eine Idee wie man debuggt?

18
Justin

pdate 24.05.2017:

Die vorherige Antwort betraf einen frühen Zustand des Schwarmmodus. Die Optionen secret und auto-accept wurden inzwischen entfernt und die Option advertise-addr wurde hinzugefügt. Dies kann nun erledigt werden mit:

docker swarm init \
  --advertise-addr $(docker-machine ip node-1)

Der Standardport ist 2377. Sie können auch einen Netzwerkschnittstellennamen anstelle einer IP-Adresse verwenden, und swarm sucht nach der IP-Adresse für diese Schnittstelle. Die Listener-Adresse ist weiterhin eine Option, standardmäßig werden jedoch alle Schnittstellen überwacht. Dies ist normalerweise die bevorzugte Lösung.


rsprüngliche Antwort:

Ich habe das mit docker-machine noch nicht gemacht, aber ich weiß, dass der neue Schwarm sehr empfindlich auf die Einträge in/etc/hosts reagiert. Stellen Sie sicher, dass sich Ihre IP-Adresse und Ihr Hostname in dieser Datei befinden und nur an einer einzigen Stelle (nicht auch Loopback- oder anderen internen Adressen zugeordnet). Ab RC3 verwenden sie auch die Listener-Adresse für die Werbeadresse, stellen Sie also sicher, dass dieser Hostname oder diese IP von allen Knoten im Schwarm referenziert werden kann (ziemlich sicher, dass ein Fix dafür kommt, falls nicht bereits vorhanden).

Um das Risiko von Problemen zwischen Client- und Serverversionen zu minimieren, führe ich die Befehle auch direkt in der Virtualbox aus und nicht mit Docker-Maschinen-Umgebungsvariablen.

19
BMitch

Suchen Sie zunächst in Ihrem Netzwerk nach der öffentlichen IP-Adresse Ihres Computers

ifconfig

wähle die physische wie 192.168.1.x (nicht docker0, das ist eine virtuelle interne IP für Docker)

docker swarm init --advertise-addr 192.1.68.1.x

(wird standardmäßig auf Port 2377 gesetzt)

15
Genovo

Laut Docker´s Guide: https://docs.docker.com/get-started/part4/#create-a-cluster

Erhalten Sie eine Fehlermeldung über die Verwendung von --advertise-addr?

Kopieren Sie die IP-Adresse für Ihre virtuelle Maschine, indem Sie docker-machine ls ausführen, und führen Sie dann den Docker-Befehl swarm init erneut aus. Verwenden Sie dabei diese IP-Adresse und geben Sie Port 2377 (den Port für Swarm-Joins) mit --advertise-addr an. Beispielsweise:

andockmaschine ssh myvm1 "Andockschwarm init --advertise-addr 192.168.99.100:2377"

7
Jesus Almaral

Beim Verwenden von Docker mit envs zum Herstellen einer Verbindung mit dem vom Docker erstellten Computer wurde der gleiche Fehler gemeldet. Nach docker-machine ssh <machine-name> und mache das docker swarm init lokal auf der Maschine habe ich auch die Nachricht über --advertise-addr erhalten. Der lokale Befehl docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100:2377 dann hat es funktioniert.

5
user2389922

Prüfen docker --version und stellen Sie sicher, dass Client und Server auf derselben Version sind. Wenn sie unterschiedlich sind, verwenden Sie den folgenden Befehl, um die boot2docker-Version abzurufen, die mit dem Docker-Client auf Ihrem Computer übereinstimmt.

docker-machine create --driver virtualbox --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc4/boot2docker-experimental.iso manager1

1
srivats