Docker如何从容器

时间:2017-03-30 13:09:35

标签: java web docker

目前我想设置一个带有MongoDB和WebServer的Linux服务器,它可以将内容保存在这个数据库中。我需要它们都在Docker容器内运行。

我的问题是我的WebServer似乎没有从容器中“看到”MongoDB。

到目前为止我尝试的是: 使用

运行MongoDB

docker run -p 27017:27017 -v ... repoimage

初始化很好,我可以通过mongoshell访问这个数据库,没有任何问题。 如果数据库DOESNT在容器中运行但在主机上作为java应用程序运行,则Web服务器也可以访问数据库。

当我现在尝试通过容器运行服务器时,我得到一个java异常,说“连接被拒绝”(当他无法打开套接字时抛出)

(重要:服务器通过“localhost”访问mongodb)

我认为容器网络是“链接”在一起的。有没有人有同样的问题?

2 个答案:

答案 0 :(得分:1)

Localhost将由容器中的hosts文件解析,因此它不会指向容器外部的主机localhost。使用 - net =“host”运行容器以解析。

另外,我建议使用docker-compose启动两个容器以拥有自己的网络,并通过自己的哈希值在主机文件中互相引用。

https://docs.docker.com/compose/networking/#configuring-the-default-network

答案 1 :(得分:0)

尝试将Web服务器指向正确的容器IP。您可以使用此命令

获取容器IP

docker inspect <container-uid> | grep IPAddress

我认为第一个容器旋转的默认IP是172.17.0.2。这样,您的Web服务器将指向运行MongoDB的容器,而不是localhost。