无法连接到在docker容器中运行的mongoDB

时间:2014-09-13 21:45:05

标签: mongodb docker

遵循此示例:https://docs.docker.com/engine/examples/mongodb/

尝试使用以下代码连接到mongoDB:mongo ip:27017 (其中ip是来自boot2docker ip的名称)+来自docker ps的端口号:

27017 / TCP
或与-P
0.0.0.0:49155->27017/tcp

无论哪种方式,我都会收到以下错误:

  

警告:无法连接到ip:27017,原因:错误:61连接   拒绝

     

错误:无法连接到服务器ip:27017(ip),连接尝试   在src / mongo / shell / mongo.js失败:148异常:连接失败

4 个答案:

答案 0 :(得分:19)

如果您指定了正确的端口但仍无法连接到docker中运行的mongodb(例如我),请确保您在连接URL中使用服务名称(或容器名称),例如mongodb://mongodb_service:27017/mydb,在docker-compose.yml

中定义
services:
  mongodb_service:
    image: mongo

我使用的是hostname值,这不是正确的事情。您可以通过查看docker inspect mongodb_service部分中的Aliases来验证这一点。

答案 1 :(得分:13)

我使用的是端口27017而不是49155(doh,端口转发)

0.0.0.0:49155->27017/tcp

感谢ZeissS

答案 2 :(得分:11)

如果您使用的是Mac并使用Docker Machine,请执行以下操作:

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

答案 3 :(得分:0)

DATABASE_URI=mongodb://mongo:27017/db_name

应该是如下服务定义的数据库 URI(并且不是 mongodb://localhostmongodb://IP)。使用服务名称或容器名称。

services  
  mongo:
    container_name: mongo
    image: mongo
    ports: 
      - '27017:27017'