Docker Desktop + WSL2 代理问题解决记录

问题现象

在 WSL2 中执行:

复制代码
docker pull pytorch/pytorch:1.11.0-cuda11.3-cudnn8-runtime

报错:

复制代码
proxyconnect tcp: dial tcp 127.0.0.1:10808: connect: connection refused

原因是之前 WSL 网络模式配置为 mirrored,导致 Docker Desktop + WSL2 下代理访问异常。


方案一:删除原来的 mirrored 配置

打开 .wslconfig

复制代码
notepad $env:USERPROFILE\.wslconfig

删除原来的配置:

复制代码
networkingMode=mirrored

也就是不要显式指定 mirrored,让 WSL 回到默认网络模式。

保存后执行:

复制代码
wsl --shutdown

然后重新打开 WSL,并重启 Docker Desktop。


方案二:显式修改为 NAT

也可以直接把 .wslconfig 改成 NAT:

复制代码
[wsl2]
networkingMode=nat

或者在 WSL 设置界面中修改:

复制代码
WSL 设置 → 网络 → 网络模式 → Nat

我当前实测可用的设置是:

复制代码
网络模式:Nat
Hyper-V 防火墙:开
localhost 转发:开
自动代理:开
DNS 代理:开
DNS 隧道:开

修改后同样需要执行:

复制代码
wsl --shutdown

然后重新打开 WSL,并重启 Docker Desktop。


验证

重新执行:

复制代码
docker pull pytorch/pytorch:1.11.0-cuda11.3-cudnn8-runtime

可以看到镜像开始正常下载:

复制代码
Pulling from pytorch/pytorch
Downloading
Waiting

说明问题解决。


备注

进入 WSL 时可能会提示:

复制代码
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。
NAT 模式下的 WSL 不支持 localhost 代理。

这个提示不影响本次 Docker pull。实际测试中,切换为 NAT 后 Docker Desktop + WSL2 可以正常拉取镜像。