如何从网络内的另一个docker容器中引用docker容器?

时间:2017-09-26 13:00:04

标签: docker networking dns jira

我尝试使用Confluence创建服务,使用JIRA创建服务。

我已经创建了一个网络:

docker network create --driver bridge atlassian_stack

并在该网络上发布了一个容器,一个暴露端口8080,另一个暴露8090:

docker run -it --detach --publish 8080:8080 --net=atlassian_stack --name JIRA cptactionhank/atlassian-jira-software:latest

docker run -it --detach --publish 8090:8090 --net=atlassian_stack --name CONFLUENCE cptactionhank/atlassian-confluence:eap

我可以在http://localhost:8080(JIRA)和http://localhost:8090(Confluence)本地访问。

但是,将应用程序链接在一起需要Atlassian产品中的硬编码IP。 Confluence想知道JIRA所在的位置和vica verca。它似乎没有在上述IP地址上看到对方(这是有意义的),因为它抱怨未解析的DNS。

问题是:当应用程序需要硬编码的DNS / IP,并且它们位于同一网络中时,如何正确地将它们相互引用?

1 个答案:

答案 0 :(得分:2)

当多个容器共享一个公共网络时,每个容器都可以使用容器name解析任何其他容器(在同一网络上)。

所以在你的情况下,你应该能够运行docker exec -it JIRA ping CONFLUENCEdocker exec -it CONFLUENCE ping JIRA假设ping在这些容器中可用,如果没有,你可以执行/附加一个shell并安装所需的网络工具(pingtelnetnc等)[docker exec -it JIRA sh,然后在#提示符,yum install telnet -y或{{ 1}}取决于基本图像的特定发行版。]

如果你只能使用ip地址(而不是主机名/名称),那么你需要在Confluence启动时通过运行apt instal -y或类似的东西来获取它。一个例子如下:

nslookup jira