因爲你沒有張貼你的作文。我做了很少的假設。撰寫假設低於
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
- 443:443
depends_on:
- jenkins
- sonar
jenkins:
image: jenkins
sonar:
image: sonarqube
而且所有這些運行在10.10.10.50
。現在,如果您將DNS設置爲10.10.10.20
,則jenkins.network.com
將解析爲10.10.10.50
。但是在碼頭網絡中,您需要jenkins.network.com
解析爲容器的IP。
所以,如果上述所有是正確的,那麼下面是最簡單的解決方案
version: '3'
service:
nginx:
image: nginx
ports:
- 80:80
- 443:443
depends_on:
- jenkins
- sonar
jenkins:
image: jenkins
networks:
default:
aliases:
- jenkins.network.com
sonar:
image: sonar
networks:
default:
aliases:
- sonar.network.com
在nginx的圖像,我可以達到jenkins.network.com
[email protected]:/# telnet jenkins.network.com 8080
Trying 172.23.0.3...
Connected to jenkins.network.com.
Escape character is '^]'.
Connection closed by foreign host.
而且你能做到這一點從兩個詹金斯和聲納容器和得到相同的結果
編輯-1
如果你希望DNS要經過代理,您可以更改別名到該網絡
version: '3'
service:
nginx:
image: nginx
ports:
- 80:80
- 443:443
depends_on:
- jenkins
- sonar
networks:
default:
aliases:
- sonar.network.com
- jenkins.network.com
jenkins:
image: jenkins
sonar:
image: sonar
所以你能用挖命令解釋這個問題? –
@TarunLalwani讓我試着擴展它。基本上它的工作原理應該如此。我可以通過代理訪問服務器。問題在內部碼頭網絡中。解析sonarqube.mynetwork.com時,解析爲10.10.10.50。 Docker容器使用主機DNS來獲取它。所以詹金斯在10.10.10.50獲得了sonarqube地址,但是因爲它只關閉了172.16.10.1的代理服務器,所以它試圖在10.10.10.50處找到代理服務器,而不是172.16.10.1地址,並且你找不到路由。這有幫助嗎? – Matt
所以,如果我正確的問題,你想在jenkin服務器'jenkins.network.com'解析爲'172.16.10.1'?如果是,那麼發佈你的'docker-compose'文件,如果使用任何 –