【问题标题】:Can't connect to mongodb in docker container from local machine无法从本地机器连接到 docker 容器中的 mongodb
【发布时间】:2019-06-26 01:47:07
【问题描述】:

我正在运行带有 mongodb 的 docker 容器 someId mongo:3.6 "docker-entrypoint.s…" 11 days ago Up 11 days 0.0.0.0:27017->27017/tcp myMongo 当我尝试通过 mongo localhost:27017 从本地计算机连接到该 mongo 时,我收到错误

error: couldn't connect to server localhost:27017, connection attempt failed: SocketException: Error connecting to localhost:27017 (127.0.0.1:27017) :: caused by :: Connection refused : connect@src/mongo/shell/mongo.js:328:13

我做错了什么?

更新 这是docker-compose ps的输出

myMongo docker-entrypoint.sh --wir ... Up 0.0.0.0:27017->27017/tcp

Docker 编写文件

version: '2'

services:
  mongo:
    image: "mongo:3.6"
    container_name: myMongo
    ports:
     - "27017:27017"
    mem_limit: 2G

更新最终结果 重新启动我的 ubuntu,再次启动 docker-compose,一切都开始按预期工作:mongo localhost 现在可以工作了。怀疑是ubuntu 18.04注销过程有问题,因为在那之前(和系统重启前)我执行了几次注销/登录

【问题讨论】:

  • 它不会连接,因为 docker 容器网络与您的本地系统网络是分开的。因此,您需要通过以下命令在本地系统上运行带有暴露端口的 docker:docker run -d -e ROOT_URL=http://localhost -e MONGO_URL=mongodb://localhost:27017 --network="host"
  • 实际上我通过docker-compose 命令启动了那个docker进程。更新了问题
  • 那么你还需要添加主机和docker端口映射,如ports: - 10005:80
  • 那么你还需要添加主机和docker端口映射,如ports: - 10005:80

标签: mongodb docker ubuntu


【解决方案1】:

启动 docker mongo 容器并从本地系统连接的步骤:

  1. 创建 docker docker-compose.yml 文件为:

    version: '2'
    services:
      mongo:
        image: "mongo:3.6"
        container_name: myMongo
        ports:
         - "27017:27017"
        mem_limit: 2G
    
  2. 在 docker composer up 之前,你应该检查一下 27017 端口是否已经被其他一些进程占用了:

    netstat -an | grep 27017
    

    lsof -i -P ;// look for the port 27017
    

    如果端口号 27017 已被占用,那么您必须将 docker compose 中的端口号从 27027 更改为您想要的任何端口号。

  3. 通过以下命令启动 docker 容器[无论 docker-compose.yml 文件在哪里,您都必须在同一目录中]

    docker-compose up
    

    查看下面的屏幕截图,容器是如何创建和启动的

  4. 现在您的 mongo db 3.6 docker 容器已启动并运行,如果默认端口为 27017,则打开新终端并以 mongo 连接 mongo shell,否则为 mongo --port <whateverport number in docker compose>

希望这个解释对你和其他人有帮助:)

【讨论】:

  • 谢谢,似乎问题出在我的 ubuntu 18.04 上的注销/登录过程,因为当我执行注销然后在运行的操作系统上登录时会发生这种情况。或者,如果我重新启动我的操作系统 - 一切正常
猜你喜欢
  • 1970-01-01
  • 2017-10-03
  • 2018-04-11
  • 1970-01-01
  • 2018-01-09
  • 2016-03-02
  • 2016-01-29
  • 2015-11-28
相关资源
最近更新 更多