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

如何从网络中的另一个docker容器中引用docker容器?,docker,networking,dns,jira,Docker,Networking,Dns,Jira,我正在尝试创建一个带有Confluence和一个带有JIRA的服务 我已经创建了这样一个网络: docker网络创建——驱动桥atlassian\u堆栈 并在此网络上分别发布了一个容器,一个暴露端口8080和另一个8090: docker run -it --detach --publish 8080:8080 --net=atlassian_stack --name JIRA cptactionhank/atlassian-jira-software:latest docker run -i

我正在尝试创建一个带有Confluence和一个带有JIRA的服务

我已经创建了这样一个网络:

docker网络创建——驱动桥atlassian\u堆栈

并在此网络上分别发布了一个容器,一个暴露端口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
(汇流)

但是,将应用程序链接在一起需要Atlassian产品中的硬编码IP。Confluence想知道JIRA和vica住在哪里。他们似乎无法在上述IP地址上看到对方(这是有道理的),因为他们抱怨未解析的DNS


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

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

因此,在您的情况下,您应该能够运行
docker exec-it JIRA ping CONFLUENCE
docker exec-it CONFLUENCE ping JIRA
假设这些容器中有
ping
可用,如果没有,您可以在每个容器中执行/附加一个shell,并安装所需的网络工具(
ping
telnet
nc
等)[
docker exec-it JIRA sh
,然后在
#
提示符下,
yum install telnet-y
apt instal-y
,具体取决于基础映像的特定发行版。]

如果您只能使用ip地址(而不能使用主机名/名称),则需要在Confluence启动时通过运行
nslookup jira
或类似程序获取该地址。示例如下:

~ ᐅ docker network create -d bridge www
9e1ab7c25a58fdbdaa1ec46bbcf9c9b37bb6ddc776abe6b2fb47dbb0c100d750
~ ᐅ docker run -d --name w1 --network www busybox top
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
03b1be98f3f9: Pull complete
Digest: sha256:99ccecf3da28a93c063d5dddcdf69aeed44826d0db219aabc3d5178d47649dfa
Status: Downloaded newer image for busybox:latest
fb0c198b002559b6ccd7dd145a394592a7258b1a955012aae8c707a5bea70c86
~ ᐅ docker run -d --name w2 --network www busybox top
13ea6ceb82f7d80d34a8cc3b6ba79bdfcc1d3a5f1df1b5f59a20323db21a7190
~ ᐅ docker exec -it w1 nslookup w2
Server:    127.0.0.11
Address 1: 127.0.0.11

Name:      w2
Address 1: 172.19.0.3 w2.www

~ ᐅ docker exec -it w1 sh

/ # nslookup w2 | awk '/^Address.* w2.*/ { print $3 ; exit }'
172.19.0.3
/ # exit

尝试在confluence配置中使用JIRA:8080,confluence:8090在容器名称中尝试了这一点-似乎不起作用,至少在JIRA/confluence设置中是这样的:/You's right!我在容器名称中有一个下划线,这就是为什么它们无法看到彼此…有道理。干杯。错误很简单:我有一个下划线在容器名称中,有一些东西\u JIRA——当然,这是DNS无法解决的..愚蠢:)