mongo docker(通过 Dockerfile 创建)未连接到 Compass/外部主机
mongo docker (created through Dockerfile) not connecting to Compass/ external host
我创建了一个 mongodb 的 Dockerfile,如下所示。
FROM mongo
COPY ./start.sh .
RUN chmod +x ./start.sh
EXPOSE 27017-27019
CMD ["./start.sh"]
start.sh包含以下内容
mongod
我正在使用的命令 运行 docker
sudo docker run -p 27017:27017 custom_mongo
我能够从容器内部连接此 docker(即通过 exec -it 命令,然后使用 mongo 客户端)但是,当尝试从 [=35 连接时=] 指南针超时,这意味着端口不是 forwarded/exposed.
等同于docker,当运行直接在没有任何Dockerfile的情况下,成功连接到Compass。下面给出了我用过的命令。
docker run -d -p 27017-27019:27017-27019 --name mongodb mongo
所以,问题是 start.sh 中的 mongod 命令正在监听 127.0.0.1,即 localhost,它只能从容器内部访问,不能从外部访问。
为了让容器监听外部主机,它应该连接到 0.0.0.0,这意味着任何 IP。因此,要启用它,请将启动命令编辑为
mongod --bind_ip_all.
参考:
https://forums.docker.com/t/docker-running-host-but-not-accessible/44082/48
我创建了一个 mongodb 的 Dockerfile,如下所示。
FROM mongo
COPY ./start.sh .
RUN chmod +x ./start.sh
EXPOSE 27017-27019
CMD ["./start.sh"]
start.sh包含以下内容
mongod
我正在使用的命令 运行 docker
sudo docker run -p 27017:27017 custom_mongo
等同于docker,当运行直接在没有任何Dockerfile的情况下,成功连接到Compass。下面给出了我用过的命令。
docker run -d -p 27017-27019:27017-27019 --name mongodb mongo
所以,问题是 start.sh 中的 mongod 命令正在监听 127.0.0.1,即 localhost,它只能从容器内部访问,不能从外部访问。
为了让容器监听外部主机,它应该连接到 0.0.0.0,这意味着任何 IP。因此,要启用它,请将启动命令编辑为 mongod --bind_ip_all.
参考: https://forums.docker.com/t/docker-running-host-but-not-accessible/44082/48