背景
当我们在国内使用 docker 时,因为 GFW 的原因,有时会非常慢甚至连接不上。
一般 docker 命令会遇到以下两种异常情况:
error pulling image configuration: unexpected EOF
error pulling image configuration: Get "https //production.cloudflare.docker.com ..." : EOF
此时执行 ping 命令 ping production.cloudflare.docker.com
会丢包,即使配置了 hosts 强制指定 IP 也无济于事:
尝试配置代理
虽然本地已经搭建了 trojan 代理服务,但是在 Docker 中配置了代理服务依然无济于事,流量完全没有走代理:
配置系统全局代理一样不起作用,流量依然没有走代理:
原因
之所以配置代理无效,是因为 Windows 使用的 Docker 是基于 WSL2 的,其代理不能设置为 127.0.0.1 或 localhost,而应该设置为 Windows 的 WSL 网卡地址。
解决
在控制台执行 ipconfig
命令查看 WSL 网卡地址:
在 Docker 代理设置中更换为 WSL 的 IP 并重启 Docker :
此后可以看到流量终于走本地代理服务了:
docker 命令也能成功执行了:
但是这个方法不是一劳永逸的,因为 WSL 的 IP 每次重启电脑时都会重新分配,可以参考这里将其 IP 固定