Docker VM unter OS X installiert, aber Befehle scheinen fehlzuschlagen [geschlossen]

7

Ich richte Docker auf meinem lokalen Mac OS X-Computer ein und habe einige Probleme, damit es funktioniert. Ich habe die Installationsanweisungen unter https://docs.docker.com/installation/mac/ befolgt . Alles bis zur Installation des boot2docker-Tools scheint reibungslos zu verlaufen, aber nachdem die VM ausgeführt wurde, scheinen Docker-Befehle nichts zu bewirken. Z.B,

$ docker run ubuntu echo hello world
2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF

Jeder Befehl endet mit EOF und scheint nicht das zu tun, was er eigentlich tun sollte. Hier ist ein anderes:

$ docker ps
2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF

Die vom boot2docker-Tool erstellte VM wird ebenfalls ausgeführt:

$ boot2docker status
[2014-06-17 08:26:24] boot2docker-vm is running.

Ich habe das Gefühl, dass etwas nicht richtig eingerichtet ist, aber ich habe die Anweisungen Zeile für Zeile befolgt und kann nicht sehen, wo etwas schief geht.

Jede Hilfe wird sehr geschätzt, danke!

Update 1

boot2docker Version: 1.0.0 oder 0.9.1 (nicht sicher - es gibt kein Versionsflag AFAICT)

$ boot2docker ip
Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

Auf der boot2docker-Instanz:

$ sudo netstat -ntpl | grep docker
tcp        0      0 :::2375                 :::*                    LISTEN      743/docker

$ docker --version
Docker version 1.0.0, build 63fe64c

Update 2

Ich habe gerade boot2docker neu installiert und jetzt läuft definitiv 1.0.0.

$ boot2docker version
Client version: v1.0.0
Git commit: 2fef7b2

Ich habe den Befehl auch in der Dokumentation erneut ausgeführt (was im Widerspruch zu den Anweisungen des Befehls steht, DOCKER_HOST in der Befehlszeile festzulegen, siehe unten):

$ boot2docker up
2014/06/17 18:25:43 Waiting for VM to be started...
.............................
2014/06/17 18:26:41 Started.
2014/06/17 18:26:41 Auto detection of the VM's IP address.
2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set:
2014/06/17 18:26:41     export DOCKER_HOST=tcp://:4243

Aber ich sehe immer noch die ursprüngliche Ausgabe.

$ docker run ubuntu echo hello world
2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF

Anschließend führe ich den in der Dokumentation genannten Befehl erneut aus:

$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

Und jetzt sehen Sie dies:

$ docker run ubuntu echo hello world
2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Ich sollte erwähnen, dass der Versuch, docker -dunter OS X zu laufen , diese Meldung auslöst:

$ docker -d
2014/06/17 18:34:04 The Docker daemon is only supported on linux

Welches ist nicht viel Hilfe ...

Dan Loewenherz
quelle
1
Können Sie etwas mehr Debugging-Informationen bereitstellen? Boot2docker Version mindestens? Vielleicht auch SSH an die boot2docker VM und docker -versionAusgabe bekommen ? Ich vermute, dass dies ein Problem bei der VM-Portweiterleitung mit dem neuesten boot2docker ist, der auf Docker 1.0 aktualisiert wurde und einen neuen Port verwendet.
Andy Shinn
1
Es scheint auch, dass Ihr Client-Port falsch ist (zumindest für Docker 1.0). Ich habe eine Antwort mit zwei möglichen Problemen erstellt, die auftreten können.
Andy Shinn
2
Warum ist das kein Thema? Scheint mir eine vollkommen gültige Frage zu sein. Ich bin auf ähnliche Probleme gestoßen.
Andy Shinn
@AndyShinn Anscheinend ist das Stellen einer Frage zu einer "Entwicklungsumgebung" ein Grund für die Schließung. Ich denke, man muss sich fragen, wo man solche Fragen stellen kann, ohne geschlossen zu werden ...
Dan Loewenherz
2
Ich habe es nicht bemerkt. Aber ich denke, wenn sie "professionell" sagen, bedeuten sie mehr "Produktionssystem" -Probleme. Da Sie nach dem Ausführen von Containern auf einem Mac fragen, müssen diese davon ausgehen, dass es sich um eine Entwicklungsumgebung handelt. Die Frage könnte für Stack Overflow besser gewesen sein. Ich hatte immer den Eindruck, dass Serverfehler für Fragen im Zusammenhang mit Servern und Dämonen gedacht waren, bei denen der Stapelüberlauf mehr auf Code basierte. Aber ich denke, meine Annahmen waren ein wenig falsch.
Andy Shinn

Antworten:

12

Ein paar Dinge zu überprüfen:

Aktualisierte Version von boot2docker

Überprüfen Sie, ob Ihr boot2docker auf dem neuesten Stand ist. Wenn Sie über eine Anwendung wie Homebrew installiert haben, wird möglicherweise eine ältere Version ausgeführt. Überprüfen Sie die offiziellen Versionen unter https://github.com/boot2docker/osx-installer/releases . Stellen Sie sicher, dass Sie es ausführen boot2docker deleteund dann boot2docker initnach dem Upgrade.

Docker-Client aktualisiert

Es ist wahrscheinlich eine gute Idee, einen Docker-Client auszuführen, der der Version des Servers entspricht, der in boot2docker ausgeführt wird. Wenn Sie Docker 1.0 in boot2docker ausführen, stellen Sie sicher, dass Sie den 1.0-Client von https://github.com/boot2docker/osx-installer/releases haben .

Exportieren Sie den richtigen Port

Der Port in Ihren Befehlen ist möglicherweise nicht korrekt. Haben Sie daran gedacht, export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375wie in der Dokumentation angegeben zu laufen ? Port 2375ist die neue Standardeinstellung für Docker 1.0 (sowohl in boot2docker 0.9.1 als auch in 1.0.0).

Richtigen Port weiterleiten

Nach dem Aktualisieren des DOCKER_HOSTfür den Client kann ein Problem mit boot2docker 0.9.1 auftreten, bei dem der falsche Port für Docker-TCP-Verbindungen verwendet wurde. Zu überprüfende Schritte:

  1. Melden Sie sich mit boot2docker ssh(Kennwort ist tcuser) bei der boot2docker-VM an .
  2. Überprüfen Sie dann den Abhörport mit sudo netstat -ntpl | grep docker(wahrscheinlich 2375).
  3. Öffnen Sie nun VirtualBox, gehen Sie zu den Einstellungen der boot2docker-VM und klicken Sie auf die Port ForwardingSchaltfläche.
  4. Es sollte (möglicherweise 2375) mit dem in boot2docker lauschenden Port übereinstimmen .
  5. Wenn der Port nicht übereinstimmt, aktualisieren Sie die Portweiterleitung und versuchen Sie es erneut mit dem Client.
Andy Shinn
quelle
Hey Andy, danke für deine Antwort. Ich habe die Frage mit einigen weiteren Informationen aktualisiert. Ich denke, ich verwende 0.9.1, bin mir aber nicht ganz sicher, da nach dem Einbinden in die VM "boot2docker: 1.0.0" steht. Ich werde gleich neu installieren.
Dan Loewenherz
Auch - "boot2docker ip" scheint zu scheitern. Vielleicht habe ich die falsche Version ...
Dan Loewenherz
5

Andy hat mich zu 99% dorthin gebracht. Ich markiere seine Antwort als akzeptierte Antwort, aber ich werde hier schreiben, was mein Problem gelöst hat. Nach der Installation der richtigen Version (1.0.0) von boot2docker erhielt ich immer noch eine falsche Ausgabe von Docker-Befehlen.

Ich habe dann VirtualBox geöffnet und die Ports gelesen, und siehe da, die Ports waren falsch. Das Umschalten auf die richtigen Werte hat das Problem jedoch nicht behoben.

Ich habe beschlossen, die VM zurückzusetzen, da der alte boot2docker sie wahrscheinlich falsch eingerichtet hat. Die folgenden Befehle haben das Problem behoben.

$ boot2docker delete
$ boot2docker init
$ export DOCKER_HOST=tcp://:2375
Dan Loewenherz
quelle
Ah, ich glaube, ich habe angenommen, Sie bleiben bei einer Version. Ein Upgrade einer Version würde definitiv bedeuten, die VM neu zu initialisieren.
Andy Shinn
1
Ich ging voran und aktualisierte meine Antwort, um viel gründlicher zu sein.
Andy Shinn
Ab Version 1.2.0 boot2dockerist ein neues CLI-Verb shellinitenthalten, sodass Sie dies stattdessen tun können, um die Umgebung festzulegen. var. $DOCKER_HOST. eval $(boot2docker shellinit).
Slm