Docker 更改地址段
先说解决方案
参考 Networking problems with WSL2 and Docker Desktop for windows,编辑 /etc/docker/daemon.json,加入 "bip": "192.168.200.1/24"
(根据实际情况替换),然后 systemctl
重载配置、重启 Docker 一通操作后用 ip route
和 ifconfig
验证一下变化。
为什么会有这个需求
WSL2 的网段是 172.17 开头的,这恰好和 Docker 的默认网段撞了,导致 Docker 不能直接使用 WSL2 的网关 ip 前缀的系统代理(会被认为是 Docker 内部的网址)。每次都要根据 Windows 实际的局域网 ip 来写 http 代理,太麻烦了。修改 Docker 网段之后就可以继续使用系统代理(虽然还是得传递,但是可以直接在命令行上写 --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$http_proxy
之类)。另外,由于网络代理请求是统一从 WSL2 的网关发起的,只需要在 Clash for Windows 中设置 inbounds
就能仅允许这些连接请求,这样就不必冒着裸奔的风险开启局域网内代理了。
inbounds:
- "http://172.17.xxx.yyy:zzz"