win+wsl+系统代理环境下 docker pull 问题处理

背景和需求

  • 背景:win11 安装了 wsl2,并运行了 ubuntu,ubuntu 中安装了 docker。
  • 需求:可以正常运行 docker pull 镜像(不依靠第三方镜像站,安全/合规存疑)。
  • 现状:docker pull 报错超时。
sh 复制代码
➜  ~ docker pull hello-world
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

1.设置 win 系统代理、终端代理

这里不赘述,自行设置。有条件的可以走公司合规的专线。

验证 :win powershell 可以正常 curl https://hub.docker.com/

2.设置 wsl 可以使用 win 系统代理

  1. 在文件夹地址栏,输入 %UserProfile%,创建 .wslconfig 文件。
  2. .wslconfig 中写入以下内容。
text 复制代码
[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true

[experimental]
# requires dnsTunneling but are also OPTIONAL
bestEffortDnsParsing=true

这段配置主要是 让 WSL2 内的网络和 Windows 镜像,这样 wsl 网络就和 win 完全一致了。

验证 :WSL2 终端可以正常 curl https://hub.docker.com/

参考:

3.设置 wsl 中 docker 可以使用系统代理

此时虽然 wsl 可以使用系统代理,但是 docker 为守护进程,还需要手动设置代理。

  1. 创建目录。
sh 复制代码
 sudo mkdir -p /etc/systemd/system/docker.service.d 
  1. docker.service.d目录下写文件。
sh 复制代码
vim proxy.conf 
  1. 文件中写入以下内容。
sh 复制代码
# 这个端口设成你自己的代理端口
[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"

表示docker 使用以上端口进行代理。

  1. 重启docker
sh 复制代码
sudo systemctl restart docker

验证:得到的结果和你配置的端口一样。

sh 复制代码
➜  ~ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 NO_PROXY=localhost,127.0.0.1

4.大公告成

docker pull hello-world 正常。

注意,虽然实现了系统代理,但是没法 ping,所以不要用 ping 做测试,ping 走的是 ICMP 协议,系统代理仅代理了 HTTP/HTTPS 应用层协议。

相关推荐
途经六月的绽放15 小时前
Docker Compose 从入门到实践
java·docker
不会吉他的肌肉男不是好的挨踢男19 小时前
docker 安装TDengine 并创建新用户
docker·容器·iot·tdengine
FrankYoou19 小时前
docker logs 显示的日志,默认是保存在哪里?
docker·容器
ape所念皆星河20 小时前
远程配置服务器 ubuntu22.04 里的 docker 的x11
运维·服务器·docker
小一鹿呀21 小时前
Docker一键部署prometheus并实现飞书告警详解
docker·飞书·prometheus
阆遤1 天前
在Docker debian容器中编译aarch64平台python3.11.9,并创建可离线迁移到统信uos2.0的开发环境
docker·gcc·python3.11·aarch64·统信uos2.0
Arenaschi1 天前
Android
android·linux·运维·笔记·其他·docker
敲上瘾1 天前
Docker多容器编排:Compose 实战教程
linux·运维·docker·容器·架构
m0_462185111 天前
大模型部署基础设施搭建 - Dify
docker·语言模型
2501_920047031 天前
docker概念、安装与基本使用
运维·docker·容器