如何连接运行在Docker容器中的MongoDB?

51
我正在MacOS上运行一个Docker容器,该容器启动Postgres服务器和MongoDB服务器,如下所示:
docker run -p 80:80 -p 27017:27017 dockertest
 * Starting PostgreSQL 9.3 database server
  ...done.
 * Starting database mongodb
  ...done.

输出结果显示MongoDB服务器已正确启动。然后,我查找了容器所在的虚拟机的IP地址,如下所示:
docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.2

端口似乎已被映射:
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

然而,当我想要在另一个终端窗口连接到MongoDB时,使用以下命令:

mongo 192.168.99.100:27017

I get the following error:

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

我已经看过类似的问题(例如,无法连接在Docker容器中运行的mongoDB),但是提出的解决方案似乎不起作用。


确保Mongo容器映射到端口27017。尝试运行docker ps -a并检查端口映射。 - Ali Dehghani
我已经这样做了,将“docker ps”的输出添加到问题中。 - MaVe
通过ssh进入容器,检查mongo进程是否正在运行。 - Shibashis
1个回答

22

5
应该对数据库进行密码保护,或者使用SSH隧道来进行保护,以避免其被暴露。 - Maxim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接