让 WSL2 与 Docker 走代理
WSL2 和 Docker 容器跑在各自独立的网络里,宿主机上开着代理它们完全感觉不到,apt、pip、docker pull 照样超时。要么把代理地址明确告诉它们,要么用 TUN 模式一次性接管。
办法一:TUN 模式(最省事)
- 在 Clash Verge 打开 TUN 模式,配置方法见 TUN 模式指南。
- 同时开启「局域网连接」,容器和 WSL 发出的流量才能被正常接管。
- 在 WSL 里执行 curl -I https://www.google.com 验证是否已经通了。
办法二:手动指定代理地址
- 在 Clash Verge 的「设置」里开启「局域网连接」,让混合端口对外可用,见 局域网共享。
- 在 WSL2 里查宿主机地址:cat /etc/resolv.conf 中 nameserver 那一行;启用了镜像网络模式的话直接用 127.0.0.1。
- 在 ~/.bashrc 末尾加上 export http_proxy=http://宿主机地址:7897 和 export https_proxy=$http_proxy,然后执行 source ~/.bashrc。
- Docker 拉镜像走的是后台守护进程而不是你的 shell,环境变量对它无效。Docker Desktop 需要在 Settings → Resources → Proxies 里单独填同一个地址。