加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

无法连接到docker容器中的mongodb

发布时间:2020-12-16 03:27:04 所属栏目:安全 来源:网络整理
导读:我已经构建了一个运行mongodb-instance的docker容器,该容器应该暴露给主机. 但是,当我想从主机连接到mongodb容器时,连接将被拒绝. 这是我的Dockerfile: FROM mongo:latestRUN mkdir -p /var/lib/mongodb touch /var/lib/mongodb/.keep chown -R mongodb

我已经构建了一个运行mongodb-instance的docker容器,该容器应该暴露给主机.
但是,当我想从主机连接到mongodb容器时,连接将被拒绝.

这是我的Dockerfile:

FROM mongo:latest

RUN  mkdir -p /var/lib/mongodb && 
     touch /var/lib/mongodb/.keep && 
     chown -R mongodb:mongodb /var/lib/mongodb

ADD mongodb.conf /etc/mongodb.conf

VOLUME [ "/var/lib/mongodb" ]

EXPOSE 27017

USER mongodb
WORKDIR /var/lib/mongodb

ENTRYPOINT ["/usr/bin/mongod","--config","/etc/mongodb.conf"]
CMD ["--quiet"]

/etc/mongodb.conf:

这是MongoDB的配置文件,其中我明确地将IP 0.0.0.0绑定为here on SO,127.0.0.1可能是我的问题的根本原因(但它不是)

systemLog:
  destination: file
  path: /var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /var/lib/mongodb
net:
  bindIp: 0.0.0.0

docker容器正在运行,但是无法与主机建立连接:

host$docker run -p 27017:27017 -d --name mongodb-test mongodb-image
host$docker ps
$docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
6ec958034a6f        mongodb-image       "/usr/bin/mongod --co"   4 seconds ago       Up 3 seconds        0.0.0.0:27017->27017/tcp   mongodb-test

找到IP地址:

host$docker inspect 6ec958034a6f |grep IPA
            "SecondaryIPAddresses": null,"IPAddress": "172.17.0.2","IPAMConfig": null,

尝试连接:

host$mongo 172.17.0.2:27017
MongoDB shell version v3.4.0
connecting to: mongodb://172.17.0.2:27017
2016-12-16T15:53:40.318+0100 W NETWORK  [main] Failed to connect to 172.17.0.2:27017 after 5000 milliseconds,giving up.
2016-12-16T15:53:40.318+0100 E QUERY    [main] Error: couldn't connect to server 172.17.0.2:27017,connection attempt failed :
connect@src/mongo/shell/mongo.js:234:13
@(connect):1:6
exception: connect failed

当我进入容器时,我可以连接到mongo并成功列出测试数据库.

最佳答案
使用localhost而不是ip,允许连接.

将它与暴露的端口结合使用:localhost:27017

我按照评论中的说明测试了解决方案,但它确实有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读