WSL2 中 Docker 突然无法通过代理拉取镜像问题排查
作者机器为 win11,最近将 Docker Desktop 升级到了 v4.43.2 版本,然后就出现一个很奇怪的问题:代理是正常的,但是 Docker 就是连接不上,拉取镜像时,直接报错 connect: connection refused。
1 | # 拉取镜像 |
问题分析
首先,导致这个问题的原因可能有两种情况:
- Docker Desktop 是通过 wsl2 安装的,期间 windows 有更新,可能导致 wsl 网络产生了问题
- 升级 Docker Desktop 后配置都没有动过,可能是 Docker Desktop 本身问题
从网上了解到,将 wsl 的网络改成 NAT 就可以恢复
networkingMode = NAT
。但是为了使用 wsl
镜像网络的优势,先从第 2 点开始排查,最终通过改变启动顺序解决了。
我的 .wslconfig 配置如下
1 | # 配置镜像网络,参考: https://learn.microsoft.com/zh-cn/windows/wsl/networking |
解决方案
首先一开始我的状态是开启了系统代理,wsl2 是 mirrored 模式,查看
docker info
中的代理结果如下:
1 | HTTP Proxy: http://127.0.0.1:7890 |
我的代理不论是在 windows 上还是在 wsl 都能够访问,但是 docker pull 依然报错:
1 | docker pull redis |
然后修改 Docker Desktop 的代理配置:[Settings/Resources/Proxies]

重启 Docker Desktop 后,仍然无效。
然后按以下步骤解决了:
- 关闭系统代理
- 关闭 Docker Desktop 的手动代理配置
- 重启 Docker Desktop
- 打开系统代理
- 配置 Docker Desktop 手动代理
第 3 步启动后,docker info
的代理部分为:
1 | HTTP Proxy: http.docker.internal:3128 |
后记:
具体是什么原因导致的,我也不清楚,但终归是恢复了,就不深究了。
参考
本文参考以下文章,在此致以诚挚谢意!