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