楼主搭建开发环境,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,核对官网最新文档。
- 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
然后就可以愉快的拉取镜像啦