如何从网络中的另一个docker容器中引用docker容器?
我正在尝试创建一个带有Confluence和一个带有JIRA的服务 我已经创建了这样一个网络:如何从网络中的另一个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
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无法解决的..愚蠢:)