Docker DNS (127.0.0.11) 无法解析任何内容

问题描述 投票:0回答:1

今天我更换了 ISP,从此我的 docker 容器无法连接到外界。

/srv # ping google.com
ping: bad address 'google.com'
/srv # nslookup google.com
;; connection timed out; no servers could be reached
/srv # cat /etc/resolv.conf 
nameserver 127.0.0.11
options ndots:0

我曾经通过 pihole 路由我所有的 DNS 查询,但我的新 ISP 不接受本地 IP(无论出于何种原因),而且我只有我的 ISP 路由器而不是我自己的,我还在我的路由器中设置了 Google 的 DNS

IPV4
8.8.8.8
8.8.4.4

IPV6
2001:4860:4860::8888
2001:4860:4860::8844

虽然是多余的,但我还在 Synology NAS 中设置了 IPV4 DNS 地址,因为那是 docker 运行的地方

Preferred DNS server: 8.8.8.8
Alternative DNS server: 8.8.4.4
_______________________________

/etc$ cat resolv.conf
nameserver      8.8.8.8
nameserver      8.8.4.4
domain  arnhem.chello.nl

但是,这些都没有解决问题。 以我的 Caddy 容器为例,它尝试为我的域请求证书。它失败并返回以下内容:

dial tcp: lookup acme.zerossl.com on 127.0.0.11:53: read udp 127.0.0.1:51632->127.0.0.11:53: i/o timeout

我已经readatonofthreads有类似的问题,但似乎没有一个能解决我的问题

到目前为止我已经尝试过的事情

  • 重新启动我的容器
  • 创建
    /etc/docker/daemon.json
    并直接添加 Google 的域(当我打印容器的
    resolv.conf
    时,这似乎被忽略)
  • 直接操作容器的
    resolve.conf
    。这似乎在重新启动后立即丢失
  • 重启docker
  • 重新启动主机(Synology NAS)

所以对我来说,这似乎是 Docker 内部 DNS 服务器出了问题,但目前我不确定了。由于最初唯一改变的是我的路由器,我的赌注仍在于此,但我必须检查每个设置一百次,并且似乎没有任何问题。可能是什么原因导致这个问题?

*编辑

daemon.json

/etc$ sudo cat docker/daemon.json
Password:
{
        "dns": [
                "8.8.8.8",
                "8.8.4.4"
        ]
}

systemctl cat docker
(请注意,由于它在 Synology 上运行,因此以下命令有点不同)

/etc$ systemctl cat pkg-ContainerManager-dockerd.service
# /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
IgnoreOnIsolate=true
DefaultDependencies=no

[Service]
Type=notify
ExecStart=/var/packages/ContainerManager/target/usr/bin/dockerd --config-file /var/packages/ContainerManager/etc/dockerd
.json
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=always
RestartSec=2
TimeoutSec=0
StartLimitBurst=3
StartLimitInterval=60s

[X-Synology]
docker dns containers synology
1个回答
0
投票

您已将配置文件从

/etc/docker/daemon.json
覆盖为
/var/packages/ContainerManager/etc/dockerd.json
。您需要在该文件中设置 DNS 设置,例如:

$ cat /var/packages/ContainerManager/etc/dockerd.json
{
        "dns": [
                "8.8.8.8",
                "8.8.4.4"
        ]
}

然后使用

systemctl restart docker
重新启动 docker 引擎。

© www.soinside.com 2019 - 2024. All rights reserved.