docker dns与主机上的自定义dns一起失败
我正在尝试在docker容器中设置pihole(在raspberry pi上),因此,在我的ip上有我的DNS:192.160.170.10。docker容器运行dns并公开其端口53,其中dns可用 在主机上运行docker dns与主机上的自定义dns一起失败,docker,dns,Docker,Dns,我正在尝试在docker容器中设置pihole(在raspberry pi上),因此,在我的ip上有我的DNS:192.160.170.10。docker容器运行dns并公开其端口53,其中dns可用 在主机上运行iplookup google.com时,我得到了正确的输出: Server: 192.160.170.10 Address: 192.160.170.10#53 Non-authoritative answer: Name: google.com
iplookup google.com
时,我得到了正确的输出:
Server: 192.160.170.10
Address: 192.160.170.10#53
Non-authoritative answer:
Name: google.com
Address: 172.217.16.78
我的resolv.conf也包含这个地址。
运行docker容器时,我无法执行此操作,但是:
docker运行busybox nslookup google.com
产出:
我已尝试使用以下命令指定dns:
docker run --dns 192.160.170.10 busybox nslookup google.com
但这也不能解决问题。我还尝试将dns添加到/etc/docker/daemon.json
,这也不起任何作用。
docker容器的resolv.conf
输出是:nameserver 192.160.170.10
我的配置有什么问题/如何进一步调试此DNS问题?
编辑:
docker run--rm--net=host busybox nslookup google.com的输出
Server: 192.160.170.10
Address: 192.160.170.10:53
Non-authoritative answer:
Name: google.com
Address: 172.217.16.78
*** Can't find google.com: No answer
您是否尝试过一个肯定能解析google.com的DNS(
docker run--rm--DNS 8.8.8.8 busybox nslookup google.com
)?如果这仍然不起作用,您可以尝试ping或telnet名称服务器,以检查其是否可访问;;连接超时;无法访问服务器表明无法访问解析程序。您可以尝试重置所有内容:我可以从容器中ping 8.8.8.8
,但我无法连接--dns 8.8.8.8 nslookup google.com
,因为我使用的是覆盆子pi,我无法使用链接重置网络。不过,我已经用docker系统修剪尝试过了。我也可以ping google.com
,不过出于好奇,它会解决问题(但nslookup不起作用),你能试着运行docker run--rm--net=host busybox nslookup google.com
?我已经为答案添加了命令和响应(因为格式化)。我猜问题出在docker bridge网络中(可能在iptables规则中,应该从docker网桥外部进行翻译,反之亦然)。如果您直接在主机网络(raspberry)上运行容器,看起来很好。可能53被某种方式阻止。不容易复制
Server: 192.160.170.10
Address: 192.160.170.10:53
Non-authoritative answer:
Name: google.com
Address: 172.217.16.78
*** Can't find google.com: No answer