如何确保始终连接到同一个docker容器?

时间:2016-06-30 15:30:35

标签: docker ip containers

我真的很了解这个问题。 当我在Docker中启动3个容器时,它们会获得3个不同的IP地址,这些IP地址按顺序分配,我可以从其他容器中解决它们,一切正常。 但是当我在那些3之前启动一个不同的容器时,3会获得不同的IP地址并且整个设置都会变成地狱。

我一直在纠缠谷歌已经有一段时间了,但我似乎找不到一个合适的(而不是太复杂的)解决方案来有一个稳定的方式连接到某个容器。这并不是说我想自己分配IP,只是为了告诉docker主机“每次容器X启动时,为它分配IP 172.17.0.X” 必须有一些方法,我启动容器的顺序无关紧要,不可能我每次重新启动容器时都必须更改设置。

所以这里有些帮助会很好吗? 我可以通过某种方式将IP分配给容器或为其提供某种别名,我可以从另一个容器中解决这些问题。

4 个答案:

答案 0 :(得分:2)

我认为您应该在Docker容器中使用hostname而不是IP地址。当您运行Docker容器时,您可以在容器之间使用--link。见https://docs.docker.com/v1.8/userguide/dockerlinks/#communication-across-links

在新版本中,可以轻松地将容器连接在同一网络中。见https://docs.docker.com/engine/userguide/networking/dockernetworks/

答案 1 :(得分:1)

通过ip从容器连接到另一个容器它不是“docker-way”,所以真正正确的方法是使用--link发布Nguyen Sy Thanh Son
例如:
docker run --name=db image1 docker run --name=app --link outernamedb:internalname image2 然后在app容器内使用internalname:3306

但如果您尝试在 app之前启动db ,它将无效,因为对于这种情况,对于高于1.11的码头工人来说,存在合法的黑客行为。
docker official docks开始,您可以使用--ip标志为容器设置精确的IP docker run --name=db --ip 172.17.0.90 image1 docker run --name=app --ip 172.17.0.91 image2 然后在app容器内使用172.17.0.90:3306

答案 2 :(得分:1)

使用Docker Networks。链接被弃用,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
...

答案 3 :(得分:1)

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

How do I set up a DNS container inside docker-compose?

我希望这有帮助;)