[英]How can I connect a adminer docker container with a mariadb docker container?
[英]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”,因此真正正確的方法是使用--link
如Nguyen 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
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.