docker dns与主机上的自定义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

我正在尝试在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
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