
一个干净的解决方案是配置docker + dnsmasq,以便将来自docker容器的DNS请求转发到主机上运行的dnsmasq守护程序。
为此,您需要通过添加一个文件来配置dnsmasq来监听docker使用的网络接口
/etc/NetworkManager/dnsmasq.d/docker-bridge.conf:
$ cat /etc/NetworkManager/dnsmasq.d/docker-bridge.conflisten-address=172.17.0.1
然后重新启动网络管理器以考虑配置文件:
sudo service network-manager restart
完成此 *** 作后,您可以将
172.17.0.1docker中的主机IP地址(即Docker中的主机IP地址)添加到DNS服务器列表中。可以使用以下命令行来完成:
$ sudo docker run -ti --dns 172.17.0.1 mmoy/ubuntu-netutils bashroot@7805c7d153cc:/# ping www.example.comPING www.example.com (93.184.216.34) 56(84) bytes of data.64 bytes from 93.184.216.34: icmp_seq=1 ttl=54 time=86.6 ms
…或通过docker的配置文件
/etc/docker/daemon.json(如果不存在则创建它):
$ cat /etc/docker/daemon.json{ "dns": [ "172.17.0.1", "8.8.8.8", "8.8.4.4" ]}(如果dnsmasq失败,它将退回到Google的公共DNS)
您需要重新启动Docker才能将配置文件考虑在内:
sudo service docker restart
然后,您可以照常使用docker:
$ sudo docker run -ti mmoy/ubuntu-netutils bashroot@344a983908cb:/# ping www.example.comPING www.example.com (93.184.216.34) 56(84) bytes of data.64 bytes from 93.184.216.34: icmp_seq=1 ttl=54 time=86.3 ms
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)