【docker】(202406) docker通过代理拉取镜像

环境

docker是通过systemd的service文件启动的

问题

已经配置了如下代理

1
2
3
[root@ningan ~]# cat ~/.bashrc |grep proxy
export http_proxy=http://192.168.20.20:7890
export https_proxy=http://192.168.20.20:7890

但是,执行docker pull的时候无法拉取镜像,报错如下:

1
2
[root@ningan ~]# docker pull xxx//abc:v0.3.0
Error response from daemon: Get "https://xxx/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

解决

修改docker的service文件,添加环境变量

1
2
3
4
5
6
7
8
9
10
[root@ningan ~]# cat /lib/systemd/system/docker.service |grep PROXY
Environment="HTTP_PROXY=http://192.168.20.20:7890"
Environment="HTTPS_PROXY=http://192.168.20.20:7890"
[root@ningan ~]#
[root@ningan ~]# systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://192.168.20.20:7890 HTTPS_PROXY=http://192.168.20.20:7890


[root@ningan ~]# systemctl daemon-reload
[root@ningan ~]# systemctl restart docker

然后就可以成功拉取拉~

原因

docker 镜像由 docker daemon 管理,所以不能用修改 shell 环境变量的方法使用代理服务,而是从 systemd 角度设置环境变量。

参考

如何配置docker通过代理服务器拉取镜像 | 自由行 (lfhacks.com)


【docker】(202406) docker通过代理拉取镜像
http://example.com/2024/06/17/k8s/【docker】(202406) docker通过代理拉取镜像/
作者
ningan123
发布于
2024年6月17日
许可协议