我已经构建了一个运行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并成功列出测试数据库.
最佳答案