J'exécute un conteneur Docker sur MacOS qui démarre un serveur Postgres et un serveur MongoDB comme suit:
docker run -p 80:80 -p 27017:27017 dockertest
* Starting PostgreSQL 9.3 database server
...done.
* Starting database mongodb
...done.
La sortie montre que le serveur MongoDB est démarré correctement. Ensuite, je cherche l'adresse IP du VM dans lequel le conteneur est en cours d'exécution, comme suit:
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.11.2
Les ports semblent être cartographiés:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39e5198e4693 dockertest "/bin/sh -c 'service " 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:27017->27017/tcp drunk_nobel
Cependant, lorsque je veux me connecter à MongoDB dans une autre fenêtre de terminal, en utilisant
mongo 192.168.99.100:27017
Je reçois l'erreur suivante:
MongoDB Shell version: 2.6.4
connecting to: 192.168.99.100:27017/test
2016-06-05T18:48:19.050+0200 warning: Failed to connect to 192.168.99.100:27017, reason: errno:61 Connection refused
2016-06-05T18:48:19.052+0200 Error: couldn't connect to server 192.168.99.100:27017 (192.168.99.100), connection attempt failed at src/mongo/Shell/mongo.js:148
exception: connect failed
J'ai déjà examiné des questions similaires (par exemple, Impossible de se connecter à mongoDB s'exécutant dans un conteneur docker ), mais la solution proposée ne semble pas fonctionner.
Le problème n'était pas lié à Docker, mais au bindip dans la configuration de MongoDB. Voir par exemple, mongodb.conf bind_ip = 127.0.0.1 ne fonctionne pas mais 0.0.0.0 fonctionne