问题现象
在 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 可以正常拉取镜像。