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

标签 mongodb docker docker-link

我想在容器中运行 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/

相关文章:

docker - 我可以在容器/docker 中设置一个进程吗?

docker - 当外部链接的容器实际上正在使用docker-compose运行时,如何避免 “Docker cannot link to a non running container”错误

docker - 当我仍然需要对地址进行硬编码时,为什么要使用docker链接?

docker - 在 docker 中链接容器(RancherOS 和命令行)

node.js - $push 和 $set 数组中的相同子文档

windows - 启动 mongod.exe/mongo.exe 时出现错误 0xc000007b

node.js - Mocha 单元测试 Mongoose 模型

javascript - 使用 Mongoose 删除索引的推荐方法是什么?

database - 如何在 Kubernetes Pod 中运行的 PostgreSQL 中启用流式复制?

azure - Linux 容器上的 Azure Function 的 Docker 问题 - 函数缺失导致函数运行时出现 404