2014-09-13 16 views
15

Nach diesem Beispiel verbinden: https://docs.docker.com/engine/examples/mongodb/Können mongoDB läuft in Docker Behälter

Wenn mit zu mongoDB Verbindungsversuch: mongo ip:27017 (wo ip ist der Name von boot2docker ip) + die Portnummer von Docker ps:

27017/tcp
oder mit -P
0.0.0.0:49155->27017/tcp

So oder so bekomme ich folgende Fehler:

warning: Failed to connect to ip:27017, reason: errno:61 Connection refused

Error: couldn't connect to server ip:27017 (ip), connection attempt failed at src/mongo/shell/mongo.js:148 exception: connect failed

+1

Verwenden Sie 'Docker Logs ' und 'ps', um zu überprüfen, dass mongodb tatsächlich läuft und auf dem Port belauscht, den Sie ausgesetzt haben. – ZeissS

+3

ok Überprüfung des Tutorials tiefergehend: können Sie die Zeile von 'Docker ps' für den Container buchen? Ich glaube, Sie haben den internen Port mit dem öffentlichen Port verwechselt. – ZeissS

+0

Danke, dass du mich wieder zum Nachdenken gebracht hast :-) –

Antwort

10

Ich war mit Port 27017 statt 49155 (doh, Port-Forwarding)

0.0.0.0:49155->27017/tcp

Dank ZeissS

+4

Die (wie ich) wer hat verwirrt mit der Antwort. Verwenden Sie Folgendes, um eine Verbindung herzustellen. ** $ Mongo IP: 49155 ** – Jardalu

+0

 If you are on a Mac and using Docker Machine, do the following: 1. Get the name of the VM running docker daemon $ **docker-machine ls** 2. Get the VM's IP info $ **docker-machine env ** 3. Connect with the mongo client to the VM IP and the mongo mapped port $ **mongo VM-IP:port** 
VMTrooper

+0

@Jardalu Ich bin immer noch verwirrt – Aleksandrus

7

Wenn Sie sind ein Mac und unter Verwendung von Docker-Maschine, gehen Sie wie folgt vor:

 
1. Get the name of the VM running docker daemon 
$ docker-machine ls 

2. Get the VM's IP info 
$ docker-machine env 

3. Connect with the mongo client to the VM IP and the mongo mapped port 
$ mongo VM-IP:port 
+2

Dies ist eine gültige Antwort, wenn Sie die VirtualBox/Docker-Maschine (Windows/Mac) Version von Docker verwenden. – Flash

13

Wenn Sie den richtigen Port und noch nicht in der Lage anzug verbinden mongodb läuft in docker (wie ich), stellen Sie sicher, dass Sie den Dienstnamen (oder Containername) in Ihrer Verbindungs-URL verwenden, z. mongodb://mongodb_service:27017/mydb, die in Ihrem docker-compose.yml definiert:

services: 
    mongodb_service: 
    image: mongo 

Ich war mit dem hostname Wert und das ist nicht die richtige Sache zu tun. Sie können dies überprüfen, indem Sie docker inspect mongodb_service im Abschnitt Aliases betrachten.

+0

Korrigieren. Für mich geht das. –

+0

Du bist mein Retter! – SegFault