docker-compose主机名和本地解析

时间:2019-06-28 03:04:37

标签: docker docker-compose

使用指定主机名(hostname:)和ip地址(ipv4_address:)的docker-compose文件创建docker容器时,我需要本地计算机(运行docker daemon服务的计算机,又名我的笔记本电脑),无需(过多)人工干预就能解析这些主机名。即如果容器是主机名为my_webserver的Web服务器服务,则我希望my_werbserver解析为我分配给该容器的IP地址。

实现此目标的最佳方法是什么?有什么比手动维护笔记本电脑上的/ etc / hosts好?

2 个答案:

答案 0 :(得分:1)

正如@KārlisĀbele所述,我认为如果没有其他服务,您将无法满足您的需求。一种解决方案是在与其他Docker容器相同网络的Docker容器中运行dnsmasq。参见Make the internal DNS server available from the host

docker run -d --name dns -p 53:53 -p 53:53/udp --network docker_network andyshinn/dnsmasq:2.76 -k -d

使用localhost作为DNS来检查其是否正常

nslookup bar localhost

(可选)将localhost设置为DNS服务器。例如,在Ubutu 18.04上,编辑/etc/resolvconf/resolv.conf.d/head

nameserver localhost

重新启动resolvconf服务。

sudo service resolvconf restart

现在,您应该能够按名称ping通容器了。

希望有帮助。

答案 1 :(得分:0)

好吧,如果没有一些定制服务来监听Docker守护程序上的事件,这似乎是不可能的...

我将如何做,就是编写一个简单的服务来监听Docker事件(https://docs.docker.com/engine/reference/commandline/events/)并相应地更新/ etc / hosts文件。

除此之外,如果不手动更新主机文件,我认为没有其他选择。