使用指定主机名(hostname:
)和ip地址(ipv4_address:
)的docker-compose文件创建docker容器时,我需要本地计算机(运行docker daemon服务的计算机,又名我的笔记本电脑),无需(过多)人工干预就能解析这些主机名。即如果容器是主机名为my_webserver
的Web服务器服务,则我希望my_werbserver
解析为我分配给该容器的IP地址。
实现此目标的最佳方法是什么?有什么比手动维护笔记本电脑上的/ etc / hosts好?
答案 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文件。
除此之外,如果不手动更新主机文件,我认为没有其他选择。