我已经开始使用docker并且喜欢它,主要是因为Docker容器是一种轻量级的VM。但我无法弄清楚,docker容器如何能够解析彼此的主机名。他们可以通过IP连接到对方,但不能使用他们的主机名,我甚至无法编辑容器中的/ etc/hosts来弥补这一点。当我重新启动容器时,他们会得到不同的IP地址,因此我想使用主机名代替IP来相互通信。让我们说,我想在容器中运行Zookeeper集群的Zookeeper实例,并且我想将Zookeeper服务器的主机名放在config(zoo.cfg)文件中。Docker容器如何解析在同一台机器上运行的其他Docker容器的主机名?
回答
这可能是值得检查的Docker链接(https://docs.docker.com/userguide/dockerlinks/)。当您链接到正在运行的容器时,将为您希望连接的容器添加主机条目。
在他们的榜样,他们表现出
$ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash
[email protected]:/opt/webapp# cat /etc/hosts
172.17.0.7 aed84ee21bde
. . .
172.17.0.5 db
正如你在这里看到的,它们把他们在bash是与名为db
容器中的申请,并随后主机条目添加db
与IP地址那个容器。
因此,在运行zookeeper的情况下,您可以简单地将刚启动的容器连接到zookeeper。我希望这有帮助!
这与compsoe的[documentation](https://docs.docker.com/compose/networking/)所说的一样 - 但我看不到任何主机条目:'docker exec -it my_container tail -20/etc/hosts'不会返回我的撰写文件中定义的任何服务。 – Munchkin 2016-09-02 14:42:54
作为多克尔1.10的,如果创建一个独特的搬运工网络,多克尔将帧内容器明智使用内部的DNS服务器解析主机名[1] [2] [3]。 您可以通过在docker run
内指定--name
来更改网络主机名。否则,主机名将引用容器标识(12字符长散列,如docker container ls
所示)。
参见:
来源:
[1] = docker docs - Embedded DNS server in user-defined networks
[2] = Docker Engine release notes - 1.10.0 (2016-02-04) - Networking
- 1. 链接在不同主机上运行的Docker容器?
- 2. 本地主机名的Docker容器
- 3. 如何在Linux主机上运行Windows Docker容器?
- 4. 如何从docker容器在主机上运行shell脚本?
- 5. 跨平台的Docker容器/ VM的一致主机名?
- 6. 如何从Windows主机以外的其他机器访问Docker容器?
- 7. 连接到在主机上运行在Docker容器中的Redis
- 8. 如何从另一台主机访问docker容器中的mysql?
- 9. 在Docker容器中设置主机的主机名
- 10. 如何将Docker容器从一台机器迁移到另一台机器?
- 11. 在RedHat机器上的Ubuntu Docker容器中运行Apache
- 12. 使用exec从Docker容器上的主机运行脚本
- 13. 能从容器中确定Docker主机的主机名吗?
- 14. 如何从另一主机访问在MacOSX上运行的Docker容器?
- 15. 在Docker容器中获取主机IP
- 16. Linux + Docker - 如何从Docker容器中运行主机的应用程序?
- 17. 在Docker容器中运行cron与从主机cron运行Docker容器之间的权衡是什么?
- 18. 如何在docker-compose scale后通过主机名访问其他容器?
- 19. Docker:如何调整在Docker容器中运行在主机上的本地服务器xyz.example.com
- 20. Docker容器与其他机器之间的连接问题
- 21. 将Docker界面从Docker容器暴露给Docker主机
- 22. Docker容器访问外部MySQL主机
- 23. docker cp远程(从容器到主机)
- 24. 将主机组导入Docker容器
- 25. ReactPHP和docker:无法将主机从php解析到nginx容器
- 26. Windows上的Docker:如何使用容器IP从主机连接到容器?
- 27. Docker Swarm - 在每台机器上安排容器
- 28. 作为Docker容器中的主机用户运行
- 29. 如何从外部机器ssh到ec2 ubuntu主机上的docker容器
- 30. Docker:链接不同主机上的容器
不知道是否允许搬运工回调分配IP地址,那么它可以更新DNS服务器。其他选项包括客户端发送Dyndns更新,通过DHCPd分配IP(有些可以更新DNS),或者您可以检出车队。正常的解决方案是使用主机暴露的端口,这对于具有静态侦听器的服务器确实起作用。 – eckes 2014-10-09 03:50:20