簡體   English   中英

一個 Docker Container 如何找到另一個 Docker Container 的 IP 地址?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM