docker容器如何parsing运行在同一台机器上的其他docker容器的主机名?
我已经开始使用docker并且喜欢它,主要是因为Docker容器是一种轻量级的VM。 但我无法弄清楚,如何docker集装箱可以解决彼此的主机名。 他们可以使用那里的IP连接到对方,但不使用他们的主机名,我甚至不能编辑容器中的/ etc / hosts来弥补。 当我重新启动容器时,他们得到不同的IP,因此我想用主机名代替IP进行通信。 让我们说,我想在容器中运行一个Zookeeper集群的Zookeeper实例,并且我想把Zookeeper服务器的主机名放在config(zoo.cfg)文件中。
这可能是值得检查的Docker链接( https://docs.docker.com/userguide/dockerlinks/ )。 链接到正在运行的容器时,将为您希望连接的容器添加主机条目。
在他们的例子中显示
$ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash root@aed84ee21bde:/opt/webapp# cat /etc/hosts 172.17.0.7 aed84ee21bde . . . 172.17.0.5 db
正如你在这里所看到的,他们把他们在bash中的应用程序链接到名为db
的容器上,随后为这个容器的IP地址添加一个主机条目。
所以在有zookeeper运行的情况下,你可以简单地让你刚开始的容器连接到zookeeper。 我希望这有帮助!
从Docker 1.10开始 ,如果您创build了一个独特的Dockernetworking,Docker将使用内部DNS服务器[1] [2] [3]来parsing内部容器的主机名。 您可以在docker run
指定一个带有--name
的networking主机名。 否则,主机名将引用容器标识(12个字符长的散列,由docker container ls
)。
也可以看看:
-
Docker不parsing主机名
-
什么时候在Docker中使用–hostname?
资料来源:
[1] = docker docs – 用户定义networking中的embedded式DNS服务器
[2] = Docker引擎发行说明 – 1.10.0(2016-02-04) – networking
[3] = Docker pull请求 – 供应libnetwork