讓 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 裡另外填同一個位址。