即使我可以从 Docker 容器成功 ping 主机(即docker run busybox ping -c 1 216.58.207.206
),但涉及 DNS 查找的请求会导致超时(例如docker run nslookup google.com
)。
我看过来自这个 NPM Github 问题,即编辑/etc/hosts
、来自不同网络的连接以及重新启动机器,但均无成功。
Docker 到 Docker 的连接问题似乎到 是 常见的但是,我的问题与 Docker 到 DNS 连接有关,并且与这些问题不同(即使错误消息相似)。
我也尝试过Robin Winslow 修复 Docker 的网络 DNS 配置但是,明确指定本地或全局 DNS 服务器失败。
$ docker run --dns <local DNS IP> busybox nslookup google.com
>>> nslookup: write to <local DNS IP>: No route to host
;; connection timed out; no servers could be reached
$ docker run --dns 8.8.8.8 busybox nslookup google.com
>>> nslookup: write to '8.8.8.8': No route to host
;; connection timed out; no servers could be reached
答案1
快速解决
对于遇到 Fedora 31/32 Docker 问题的人,我建议遵循Fedora Magazine 关于 Docker 和 Fedora 32 的指南
对我个人而言,该问题是由于防火墙阻止了 docker 连接而引起的,以下命令可以修复该问题:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload # reload the firewall rules
迁移至 Podman
Docker 需要一个 root 守护进程,它会创建一个安全 忧虑。可以通过切换到波德曼并将其与与Docker相同的命令:
podman run --dns 8.8.8.8 busybox nslookup google.com