让 WSL2 与 Docker 走代理

WSL2 和 Docker 容器跑在各自独立的网络里,宿主机上开着代理它们完全感觉不到,apt、pip、docker pull 照样超时。要么把代理地址明确告诉它们,要么用 TUN 模式一次性接管。

办法一:TUN 模式(最省事)

  1. 在 Clash Verge 打开 TUN 模式,配置方法见 TUN 模式指南
  2. 同时开启「局域网连接」,容器和 WSL 发出的流量才能被正常接管。
  3. 在 WSL 里执行 curl -I https://www.google.com 验证是否已经通了。
合作推荐 订阅链接从哪来? 本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。 获取高速节点

办法二:手动指定代理地址

  1. 在 Clash Verge 的「设置」里开启「局域网连接」,让混合端口对外可用,见 局域网共享
  2. 在 WSL2 里查宿主机地址:cat /etc/resolv.conf 中 nameserver 那一行;启用了镜像网络模式的话直接用 127.0.0.1。
  3. 在 ~/.bashrc 末尾加上 export http_proxy=http://宿主机地址:7897 和 export https_proxy=$http_proxy,然后执行 source ~/.bashrc。
  4. Docker 拉镜像走的是后台守护进程而不是你的 shell,环境变量对它无效。Docker Desktop 需要在 Settings → Resources → Proxies 里单独填同一个地址。