WSL2 Ubuntu中的docker配置使用宿主机的代理

129 阅读1分钟

楼主搭建开发环境,Win11安装了WSL Ubuntu,在Ubuntu里装了Docker,而不是Docker Desktop

由于默认网络无法访问Docker Hub,故写此篇文章记录配置信息

Win11可以打开WSL 设置,设置网络模式为Mirrored镜像模式,且打开下方启用启动代理,这样在WSL的Ubuntu里就可以使用宿主机的网络代理,直接访问外网。

测试连通性

 curl -I https://www.google.com

返回200则Ok。

但是由于Docker daemon直接与内核和网络栈交互,而不是通过用户 shell 的环境变量,即使在shell环境可以使用代理,docker也不走这个通道。

有以下两种方式配置Docker使用代理。

1.配置 /etc/docker/daemon.json,systemctl restart docker重启即可;

{
  "proxies": {
    "http-proxy": "http://127.0.0.1:7890",
    "https-proxy": "http://127.0.0.1:7890",
    "no-proxy": "localhost,127.0.0.1,::1"
  }
}

不同版本可能结构略有不同,这里AI给的答案喜欢在中间插一层default,或者http-proxy改成httpProxy,核对官网最新文档。

  1. systemd配置

在Ubuntu中创建代理配置文件:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

在文件中添加以下内容(替换端口为代理实际监听端口,如7890)

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1"

重启服务即可

sudo systemctl daemon-reload
sudo systemctl restart docker

然后就可以愉快的拉取镜像啦