Ale*_*lls 1 mongodb docker docker-link
我想在一个容器中运行MongoDB,这有效:
docker run -p 27017:27017 --name cdt -d mongo
Run Code Online (Sandbox Code Playgroud)
然后我想在另一个容器中运行服务器,如下所示:
docker run --name foo --link cdt:mongo exec /bin/bash -c "node server.js"
Run Code Online (Sandbox Code Playgroud)
node.js服务器尝试与mongodb建立连接localhost:27017,但无法建立连接.
有人知道为什么会这样吗?我没有正确连接容器吗?
请注意,我可以从容器外部成功连接到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"
Run Code Online (Sandbox Code Playgroud)
现在您将引用您的db via,cdt:27017因为容器的名称可以通过同一网络上的DNS解析.请注意,如果您不打算从外部世界进行连接,则不需要公开端口,同一网络上的容器之间的互连不需要端口映射.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |