我有一组使用docker compose
创建的docker容器,它创建了一个“用户定义的”桥接网络。
其中一个docker容器正在运行DNSmasq,因此我们可以定义自定义(内部)域名以指向本地IP。
问题是,其他Docker容器都无法解析这些域名。我认为问题是我无法让docker DNS将其请求转发到运行DNSmasq的docker容器(即,甚至不知道它存在)。
作为测试,我做了一个docker network inspect <network created by docker compose>
,并记下了DNSmasq容器的IP地址。然后,在另一个容器的/etc/resolv.conf
中,将nameserver
设置为该IP地址。然后,我可以解析所有这些内部域名。
可悲的是,尽管用户定义的网络启用了自动服务发现功能,但是将dnsmasq
放置在其中还是行不通的。
然后看来,完成这项工作的一种方法是强制我的DNSmasq容器始终具有相同的IP,然后确保其他docker容器将其指向它们的名称服务器,例如由defining the network explicitly in the compose file。
还有别的办法吗?我只想知道一个容器的IP地址,而不必定义整个网络来复制此自动创建的网络。