我开始使用 docker 并喜欢它主要是因为 Docker 容器是一种轻量级虚拟机。但我无法弄清楚,docker 容器如何解析彼此的主机名。他们可以使用 IP 地址相互连接,但不能使用主机名,我什至无法编辑容器中的 /etc/hosts 来弥补这一点。当我重新启动容器时,它们会获得不同的 IP,因此我想使用主机名代替 IP 来相互通信。假设我想在容器中运行 Zookeeper 集群的 Zookeeper 实例,并且想将 Zookeeper 服务器的主机名放入配置 (zoo.cfg) 文件中。
从Docker 1.10开始,如果您创建一个不同的 docker 网络,Docker 将使用内部 DNS 服务器在容器内解析主机名 [1][2][3]。您可以通过--name在docker run. 否则,主机名将引用容器 ID(12 个字符长的哈希值,如 所示docker container ls)。
也可以看看:
资料来源:
[1] = docker docs - 用户定义网络中的嵌入式 DNS 服务器
[2] = Docker 引擎发行说明 - 1.10.0 (2016-02-04) - 网络
[3] = Docker 拉取请求 - Vendoring libnetwork
可能值得查看 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
Run Code Online (Sandbox Code Playgroud)
正如您在此处看到的,它们将 bash 中的应用程序链接到名为 的容器db,随后添加一个db包含该容器 IP 地址的主机条目。
因此,在运行 Zookeeper 的情况下,您可以简单地将启动的容器链接到 Zookeeper。我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
18489 次 |
| 最近记录: |