Docker 容器无法解析 DNS 名称

Docker 容器无法解析 DNS 名称

我在 Arch Linux 上遇到了一个持续存在的 Docker 问题,即容器无法解析 DNS 名称。容器可以 ping 外部 IP 地址,表明网络连接正常,但 DNS 解析失败。此问题在所有容器中都存在,并且并非特定于单个映像。请注意,直到昨天这才出现在这台机器上。我每天工作都使用Docker,从来没有遇到过这个问题。我使用的是 Arch Linux,所以也许新的更新破坏了某些东西?注意确定。

内核:6.6.7-arch1-1

Docker:24.0.7,构建 afdd53b4e3

我根本没有以任何方式搞乱 docker 网络配置。

采取的步骤: 验证容器可以 ping 外部 IP(例如 8.8.8.8)。配置 Docker 使用 Google 的 DNS 服务器/etc/docker/daemon.json

{
    "dns": ["8.8.8.8", "8.8.4.4"]
}

检查了iptables规则,没有发现明显的错误配置。删除并重新安装 Docker,包括删除/var/lib/docker.确保没有可能干扰的冲突软件(例如 VPN 或防火墙规则)。

docker run --rm busybox ping -c 4 google.com使用类似于results in的命令运行容器ping: bad address 'google.com',而直接 ping IP(例如 8.8.8.8)则可以正常工作。docker run --rm --dns 8.8.8.8 busybox ping -c 4 google.com也不起作用。resolv.conf容器内也设置为 google DNS。

docker network inspect bridge输出显示正常。主机/etc/resolv.conf设置为使用 Google 的 DNS。 iptables 配置似乎是 Docker 的标准配置(我从来没有搞乱过它们)。

我在这里很困惑。有人遇到过类似的问题吗?如果有任何其他信息有帮助,请告诉我。

相关内容