Docker
/etc/resolv.conf通过复制主机的
/etc/resolv.conf,并过滤掉任何本地名称服务器(例如127.0.1.1)来进行填充。如果之后没有名称服务器,则Docker将添加Google的公共DNS服务器(8.8.8.8和8.8.4.4)。
根据Docker文档:
注意 :如果需要访问主机的localhost解析器,则必须在主机上修改DNS服务,以侦听可从容器内部访问的非localhost地址。
主机上的DNS服务是dnsmasq,因此,如果您使dnsmasq监听您的docker
IP,并将其添加到resolv.conf中,则docker将配置容器以将其用作名称服务器。
1 。 创建/编辑
/etc/dnsmasq.conf†并添加以下行:
interface=lointerface=docker0
2 。 找到您的Docker IP(在本例中为
172.17.0.1):
root@host:~# ifconfig | grep -A2 docker0docker0 link encap:Ethernet HWaddr 02:42:bb:b4:4a:50 inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
3 。 创建/编辑
/etc/resolvconf/resolv.conf.d/tail并添加以下行:
nameserver 172.17.0.1
4 。 重启网络,更新
resolv.conf,重启docker:
sudo service network-manager restartsudo resolvconf -usudo service docker restart
您的容器现在将能够从主机使用的任何DNS服务器解析DNS。
†路径可能是
/etc/dnsmasq.conf,
/etc/dnsmasq.conf.d/docker.conf,
/etc/NetworkManager/dnsmasq.conf,或
/etc/NetworkManager/dnsmasq.d/docker.conf根据您的系统和个人喜好上。



