web-dev-qa-db-de.com

Docker-Maschinen-Timeout - Wie kann man das Problem beheben, ohne die Maschine zu zerstören?

Ich habe ein wiederkehrendes Problem mit Docker Machine - alle paar Tage entscheidet sich das Timeout und ich kann es nicht beheben, wenn dies der Fall ist.

Beispiel

docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default            virtualbox   Timeout

Umweltinformationen

uname -a                 Darwin ColeyMBPR 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
docker version           1.11.0
docker-machine version   0.7.0
vboxmanage --version     5.0.20r106931

Versuchte Lösungen

Ich habe die folgenden Dinge in keiner bestimmten Reihenfolge ausprobiert:

  • Neustart der Docker-Maschine.
  • eval "$(docker-machine env default)" ausführen
  • Zertifikate regenerieren docker-machine regenerate-certs default
  • Neustart meiner Host-Box.
  • Docker aktualisieren.
  • Docker neu installieren.
  • Aktualisieren von VirtualBox.
  • Alle VirtualBox-Host-Netzwerkgeräte entfernen.

Hack

Das einzige, was jetzt für mich funktioniert, ist, die Docker-Maschine zu zerstören und neu zu erstellen. Dadurch werden alle meine Bilder und Container zerstört, und es ist unglaublich zeitaufwendig, sie erneut einzurichten.

docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)

Gibt es etwas, was ich versuchen kann? Vielen Dank!


Update: 9. Mai (Schritte zum Reproduzieren)

Ich kann dieses Problem mit den folgenden Schritten zuverlässig reproduzieren:

  1. Beginnen Sie mit einer frisch erstellten Docker-Maschine.
  2. Verwenden Sie docker-compose up, um einige Container zu erstellen.
  3. Fahren Sie den Computer bei laufenden Containern herunter.
  4. Nach dem Neustart funktioniert die Docker-CLI nicht, weil die Docker-Maschine das Zeitlimit überschritten hat.
27
Josh Cole

Dieser Befehl hat für mich mit dem Digitalocean-Treiber funktioniert:

docker-machine ls -t 20

Es scheint, als sei das Standard-Timeout von 10 Sekunden zu kurz.

19
Tom

Dies ist normalerweise ein Problem, das mit der Art und Weise zusammenhängt, wie Sie Ihre Maschine starten und stoppen.

Sie können es mit lösen 

Standardeinstellung für $ docker-machine stop

$ docker-machine start default

Standardeinstellung für $ docker-machine regenerate-certs

Verwenden Sie nicht "docker-machine restar default", da Ihre Netzwerkkonfigurationen dadurch nicht aktualisiert werden.

4

Ich hatte das gleiche Problem mit Docker Version 1.11.2, Build B9F10C9

das hat für mich funktioniert - meine Docker-Maschine befindet sich wieder im Status Running

$ docker-machine restart

$ eval $ (docker-machine env)

3
jset74

Mein Problem war sehr einfach. Ich blockierte Port 2376 mit meiner ufw-Firewall. Der Docker-Computer benötigt diesen Port, um eine Verbindung zur Fernbedienung herzustellen. 

Ich habe auf dieser Seite die Antwort auf mein Problem gefunden:

1
Rick.H

Das funktionierte für mich und meine Container wurden nicht zerstört:

  1. Die virtuelle Oracle-Box wurde geöffnet und die VM angehalten
  2. VM auf Docker-Maschine neu gestartet

    Standardwert für $ docker-machine restart

docker-Version: 1.12.3

docker-Maschinenversion: 0.8.2, Build e18a919

0
tej

Bisher habe ich eine etwas hacklige Lösung - dies behebt die Docker-Maschine, zerstört aber alle Container und Images.

Skript: rebuild-machine.sh

docker-machine rm -y default
docker-machine create -d virtualbox default
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "Forwarding App 1,tcp,127.0.0.1,3000,,3000"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 2,tcp,127.0.0.1,3001,,3001"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 3,tcp,127.0.0.1,3004,,3004"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 4,tcp,127.0.0.1,3005,,3005"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 5,tcp,127.0.0.1,3006,,3006"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 6,tcp,127.0.0.1,8081,,8081"
docker-machine start default
eval $(docker-machine env)

Erklärung

  • Zerstört die Standard-Docker-Maschine, Container und Bilder.
  • Erstellt eine neue Docker-Maschine in VirtualBox und stoppt sie, sodass wir VirtualBox ändern können.
  • Fügt Portweiterleitung für verschiedene Anwendungen in VirtualBox hinzu.
  • Startet die Docker-Maschine.
  • Stellt sicher, dass das Terminal für die neue IP-Adresse der Docker-Maschine eingerichtet ist.
0
Josh Cole

Ich habe Virtualbox geöffnet und geschlossen und alle VM manuell gestartet. Zustand ist wieder running

0
Crystal

Mein Problem war sehr trivial - ich habe den Befehl "docker machine ls" direkt nach dem Neustart von docker machine ausgeführt, also lief es noch nicht und das führte zu Timeout.

0
Adam Stepniak