我的机器位于具有专用 DNS 服务器的专用网络上,以及用于 DNS 解析的专用区域。我可以从我的主机解析该区域上的主机,但我无法从我的主机上运行的容器解析它们。
主持人:
root@host:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
root@host:~# ping privatedomain.io
PING privatedomain.io (192.168.0.101) 56(84) bytes of data.
容器:
root@container:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
root@container:~# ping privatedomain.io
ping: unknown host privatedomain.io
很明显,Google 的公共 DNS 服务器无法解析我的私有 DNS 请求。我知道我可以使用docker --dns 192.168.0.1
或设置强制它DOCKER_OPTS="--dns 192.168.0.1"
,/etc/default/docker
但我的笔记本电脑经常切换网络。似乎应该有一个系统的方法来解决这个问题。