[英]How to map the IP address of docker container to another container dynamically
[英]How can one Docker Container find the IP address of another Docker Container?
處理我的第一個 MSA 應用程序,並試圖弄清楚 Docker 容器如何找到另一個 Docker 容器的 IP 地址? 我的容器知道它需要連接的另一個容器的名稱,但就是這樣。 我不能使用“--link”選項或 docker-compose,因為組件可以在不同時間出現 go,我需要一種編程方式來找到 IP 到其他容器的連接地址
我不得不認為這個問題早就解決了,但是我的GoogleFoo今天一定很弱,因為我找不到任何東西!
謝謝你的幫助: :)
AAR:所以問題在於,在默認的“bridge”橋接網絡上,Docker DNS 不會跟蹤容器名稱……它會跟蹤所有其他網絡類型。
所以下面接受的解決方案是使用任何其他網絡並讓容器使用該網絡。
我創建了另一個橋接網絡,以便我仍然可以進行測試/開發工作,並且我的容器現在可以通過名稱找到另一個。 對於生產,我必須將網絡更改為“macvlan”類型。
如果您使用的是 Kubernetes 之類的東西,那么您將需要像 Zookeeper 或 Consul 這樣的服務發現解決方案。
您必須在 docker-compose 中定義網絡,如下所示
networks:
my-network:
然后使兩個容器成為同一網絡的一部分。
networks:
- my-network
他們可以使用 docker 服務名稱訪問其他 docker 服務端口。
編輯 2:沒有 dokcer-compose,我可以通信 2 個容器,如下所示:
1) 創建網絡 - my-netwrok
docker network create -d bridge my-network
2)在同一網絡下啟動2個服務
docker run -d --name eureka --network=my-network eureka-service:1.0
docker run -d --name facility --network=my-network facility-service:1.0
3) 登錄到設施容器
docker exec -it facility bash
4)從設施容器內ping eureka
bash-4.4# ping eureka
PING eureka (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.149 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.078 ms
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.