【问题标题】:Unable to connect to mongoDB running in docker container无法连接到在 docker 容器中运行的 mongoDB
【发布时间】:2014-09-13 21:45:04
【问题描述】:

以下示例: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,原因:errno:61 连接 拒绝

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

【问题讨论】:

  • 使用 docker logs <container>ps 检查 mongodb 是否真的在运行并监听你暴露的端口。
  • 好的,请更深入地查看教程:您可以为容器发布来自docker ps 的行吗?我认为您将内部端口与公共端口混淆了。
  • 谢谢你让我重新思考 :-)
  • 我也一样,docker ps 返回:mongo_1 /entrypoint.sh --smallfile ... Up 0.0.0.0:27017->27017/tcp
  • 您找到解决方案了吗?

标签: mongodb docker


【解决方案1】:

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

services:
  mongodb_service:
    image: mongo

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

【讨论】:

  • 这对我不起作用。也许有稳定版本的 mongo docker 镜像?越野车越野车的东西在这里。
【解决方案2】:

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

0.0.0.0:49155->27017/tcp

感谢蔡司

【讨论】:

  • 那些(像我一样)对答案感到困惑的人。使用以下连接。 $mongo IP:49155
  •  如果您在 Mac 上并使用 Docker Machine,请执行以下操作: 1. 获取运行 docker daemon $ docker-machine ls 2 的 VM 的名称. 获取 VM 的 IP 信息 $ docker-machine env  3. 使用 mongo 客户端连接到 VM IP 和 mongo 映射端口 $ mongo VM-IP:port 
  • @Jardalu 我还是很困惑
  • @Aleksandrus 将“IP”替换为您的 docker 机器的 IP 地址。请参阅 VMTroper 的回复。
【解决方案3】:

如果您在 Mac 上使用 Docker Machine,请执行以下操作:

1.获取运行docker daemon的VM名称 $ docker-machine ls 2.获取VM的IP信息 $ 码头机器环境 3.用mongo客户端连接VM IP和mongo映射端口 $ mongo VM-IP:端口

【讨论】:

  • 如果您使用的是 VirtualBox/docker-machine (Windows/Mac) 版本的 Docker,这是一个有效的答案。
【解决方案4】:

假设你的 mongodb 在一个容器中,其他容器要连接到它,它们都需要在同一个网络上。

要拥有 mongodb 和其他容器(想要连接它),请使用以下命令创建一个新网络

docker network create --driver bridge my_bridge

然后使用 --net 标志运行 mongodb 和其他容器

docker run --net=my_bridge --name mongodb -p 27017:27017 mongodb
docker run --net=my_bridge --name my-service -p 7002:7002 my-service

现在您应该能够使用这些容器中的给定别名连接 mongodb

mongo --host "mongodb:27017"

【讨论】:

    【解决方案5】:
    DATABASE_URI=mongodb://mongo:27017/db_name
    

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 2016-03-02
      • 2021-09-16
      • 2022-01-11
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多