簡體   English   中英

我如何確保始終連接到相同的Docker容器?

[英]How can I make sure to always connect to the same docker container?

我在真正理解這一點上有一點問題。 當我在Docker中啟動3個容器時,它們會獲得3個不同的IP地址,這些IP地址是按順序分配的,我可以從其他容器中尋址它們,並且一切正常。
但是,當我在這3個容器之前啟動另一個容器時,這3個容器獲得了不同的IP地址,整個設置陷入了困境。

我已經困擾Google了很長時間了,但是我似乎沒有找到合適的(並且不太復雜)解決方案來擁有一種穩定的方法來連接到某個容器。 我並不是要自己分配IP,只是要告訴Docker主機類似“每次啟動容器X時,為其分配IP 172.17.0.X”的信息。
必須以某種方式啟動容器的順序無關緊要,這不一定是每隔一次重新啟動容器就必須更改設置的情況。

所以這里的一些幫助會很好嗎?
我可以通過某種方式將IP分配給一個容器,或者給它提供某種別名,我可以從另一個容器中解決該別名。

我認為您應該在Docker容器中使用hostname而不是IP地址。 而且,當您運行Docker容器時,您可以在容器之間使用--link 請參閱https://docs.docker.com/v1.8/userguide/dockerlinks/#communication-across-links

在新版本中,將容器在同一網絡中連接在一起很容易。 請參閱https://docs.docker.com/engine/userguide/networking/dockernetworks/

通過ip從容器連接到另一個容器不是“ docker-way”,因此真正正確的方法是使用--linkNguyen Sy Thanh Son所示
例如:
docker run --name=db image1 docker run --name=app --link outernamedb:internalname image2然后在app容器internalname:3306使用internalname:3306

但是,如果您嘗試 db 之前啟動app ,則將無法正常工作,在這種情況下,對於docker高於1.11的Docker會有某種合法的破解方式。
Docker官方碼頭上,您可以使用--ip標志為容器docker run --name=db --ip 172.17.0.90 image1 docker run --name=app --ip 172.17.0.91 image2然后在app內部設置確切的ip容器使用172.17.0.90:3306

使用Docker網絡 鏈接已被棄用,而IP地址的東西是瘋狂的:)

$ docker network create my-net
$ docker run -d --net my-net --name container1 image1
$ docker run -d --net my-net --name container2 image2
$ docker exec -it container1 sh
# ping container2
PING container2 (172.21.0.3): 56 data bytes
64 bytes from 172.21.0.3: seq=0 ttl=64 time=0.073 ms
...

你可以在這篇文章中找到一些信息

如何在docker-compose中設置DNS容器?

我希望這有所幫助;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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