我有兩個本地 docker 容器:Jenkins 和 Bitbucket。我似乎無法從 Bitbucket 向 Jenkins 發出 http 請求。但是,我可以從 Jenkins 向 Bitbucket 提出請求。
容器是這樣運行的:
位元桶:
docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d --add-host host.docker.internal:host-gateway -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server
詹金斯:
docker run --name=jenkins -d --add-host host.docker.internal:host-gateway -v jenkins_home:/var/jenkins_home -p 9080:8080 -p 50000:50000 jenkins/jenkins:latest
為了簡單和演示目的,我將使用 curl 命令來舉例說明該行為。
從Jenkins 向 Bitbucket發出請求,將在呼叫 curl 到 Bitbucket 容器時得到預期的結果:
jenkins@c1f0ec99a73a:/$ curl -v host.docker.internal:7990
* Trying 172.17.0.1:7990...
* Connected to host.docker.internal (172.17.0.1) port 7990 (#0)
如果反過來,從Bitbucket 到 Jenkins,它不會成功:
root@2a350f4d1ff4:/var/atlassian/application-data/bitbucket# curl -v host.docker.internal:8080
* Could not resolve host: host.docker.internal
* Closing connection 0
curl: (6) Could not resolve host: host.docker.internal
問題:為了能夠從 Bitbucket 容器與 Jenkins 進行通信,我缺少什么配置?
uj5u.com熱心網友回復:
您正在通過 host.docker.internal 進行通信。
這意味著您將通過運行容器的主機從 1 個容器轉到另一個容器。
為什么不直接從一個容器轉到另一個容器而不提及主機。這也更好,因為你失去了 host.docker.internal 的依賴(它并不總是適用于所有平臺)
從一個容器直接到另一個容器可以通過兩種方式完成:
碼頭工人撰寫
將所有容器規范放在 1 個 docker-compose 檔案中。然后可以通過 docker-compose 檔案中的服務名稱連接“其他”容器
使用 IP 網路
首先創建自己的 docker 網路,并擁有第三個容器功能作為代理服務器(運行 Nginx)。然后給每個容器一個IP地址,你就可以通過IP連接了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/459130.html
