gpt4 book ai didi

mongodb - '--link' 似乎无法连接两个 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 18:08:49 24 4
gpt4 key购买 nike

我想在容器中运行 MongoDB,这个可行:

docker run -p 27017:27017 --name cdt -d mongo

然后我想在另一个容器中运行一个服务器,像这样:

docker run --name foo --link cdt:mongo exec /bin/bash -c "node server.js"

node.js 服务器尝试与 localhost:27017 建立 mongodb 连接,但未能建立连接。

有人知道为什么会这样吗?我没有正确链接容器吗?

请注意,我可以从容器外部成功连接到 mongodb 容器,但不能从“foo”容器内部的服务器连接。

最佳答案

所以来自容器的 localhost 总是(99.5% 的时间)引用容器本身。这也是 99.5% 的时间不是你想要的。如果您像这样使用 links,则需要将 localhost:27017 更改为 mongo:27017,因为这就是您要“挂载”的内容链接为 (--link cdt:mongo)。

更好的选择是使用 Docker 网络而不是链接(已弃用)。所以:

$ docker network create my-net
$ docker run --name cdt --net my-net -d mongo
$ docker run --name foo --net my-net exec /bin/bash -c "node server.js"

现在您可以通过 cdt:27017 引用您的数据库,因为容器的名称可以通过同一网络上的 DNS 解析。请注意,如果您不打算从外部世界连接,则不需要公开端口,同一网络上的容器之间的互连不需要端口映射。

关于mongodb - '--link' 似乎无法连接两个 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com