Docker 桌面在 Windows 和 Mac 上均无法进行 DNS 查找

Docker 桌面在 Windows 和 Mac 上均无法进行 DNS 查找

我在同一个网络上有三台机器(简单的家用机,带 BT 路由器),分别是 Windows、Mac 和 Linux。前两台机器运行 Docker Desktop(4.23.0),出现了这个问题,而 Linux 机器(运行原生 dockerd)没有这个问题。

任何容器内的 DNS 查找均失败。这也意味着我无法构建容器,也无法提取图像。因此,例如,“docker pull ubuntu”给出以下结果(20 秒后):

守护进程的错误响应:获取“https://registry-1.docker.io/v2/”:proxyconnect tcp:拨号 tcp:在 192.168.65.7:53 上查找 http.docker.internal:读取 udp 192.168.0.1:49442->192.168.65.7:53:i/o 超时

类似地,构建仅包含“FROM ubuntu:20.04”的 Dockerfile 会得到:

$ docker build -t test .
[+] Building 10.1s (3/3) FINISHED                                           docker:default
 => [internal] load build definition from dockerfile                                  0.0s
 => => transferring dockerfile: 55B                                                   0.0s
 => [internal] load .dockerignore                                                     0.0s
 => => transferring context: 2B                                                       0.0s
 => ERROR [internal] load metadata for docker.io/library/ubuntu:20.04                10.0s
------
 > [internal] load metadata for docker.io/library/ubuntu:20.04:
------
dockerfile:1
--------------------
   1 | >>> FROM ubuntu:20.04
   2 |
--------------------
ERROR: failed to solve: ubuntu:20.04: failed to do request: Head "https://registry-1.docker.io/v2/library/ubuntu/manifests/20.04": proxyconnect tcp: dial tcp: lookup http.docker.internal on 192.168.65.7:53: read udp 192.168.0.1:47040->192.168.65.7:53: i/o timeout

在现有(Ubuntu)容器(在 WSL2 下运行)中,“curl google.com”提供:

curl:(6)无法解析主机:google.com

(这实际上目前在 Mac 上运行,但在 Windows 上运行不了)。

我可以通过将“nameserver 8.8.8.8”添加到 /etc/resolv.conf(通常它有“nameserver 127.0.0.11”)来使查找在 Windows Ubuntu 容器中工作,但这对我的拉取/构建问题没有帮助。

对于下一步的任何帮助或提示都深表感谢!

答案1

解决了,但说实话我还是不知道原因或者实际的解决方法。

Mac。我恢复到了较早的版本。删除了 ~/.docker 目录。重新安装了最新版本。就在我准备删除所有内容(包括所有数据,例如图片等)的时候,突然它就正常工作了。

Windows。已卸载。已删除 ~/.docker(在 WSL2 内)。已重新安装最新版本。有效。

不知道原因,但删除并重新安装足够多的内容就行了。我生命中的两天……

相关内容