'--link' 似乎无法连接两个 Docker 容器
'--link' does not seem to work to connect two Docker containers
我想 运行 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
因为这就是你 'mounting' 和 link as (--link cdt:mongo
).
更好的选择是使用 Docker 网络而不是 link 网络(已弃用)。所以:
$ 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 在一个容器中,这个有效:
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
因为这就是你 'mounting' 和 link as (--link cdt:mongo
).
更好的选择是使用 Docker 网络而不是 link 网络(已弃用)。所以:
$ 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 解析。请注意,如果您不打算从外部世界连接,则不需要公开端口,同一网络上的容器之间的互连不需要端口映射。