当前位置: 代码网 > 服务器>服务器>云虚拟主机 > 一文详解如何配置docker通过代理服务器拉取镜像

一文详解如何配置docker通过代理服务器拉取镜像

2024年09月08日 云虚拟主机 我要评论
前言如果 docker 所在的环境是通过代理服务器和互联网连通的,那么需要一番配置才能让 docker 正常从外网正常拉取镜像。然而仅仅通过配置环境变量的方法是不够的。本文结合已有文档,介绍如何配置代

前言

如果 docker 所在的环境是通过代理服务器和互联网连通的,那么需要一番配置才能让 docker 正常从外网正常拉取镜像。然而仅仅通过配置环境变量的方法是不够的。本文结合已有文档,介绍如何配置代理服务器能使docker正常拉取镜像。

本文使用的docker 版本是

docker --version
docker version 25.0.1, build cb74dfc

问题现象

如果不配置代理服务器就直接拉镜像,docker 会直接尝试连接镜像仓库,并且连接超时报错。如下所示:

$ docker pull busybox
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、创建 dockerd 相关的 systemd 目录,这个目录下的配置将覆盖 dockerd 的默认配置

$ sudo mkdir -p /etc/systemd/system/docker.service.d

新建配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf,这个文件中将包含环境变量

[service]
environment="http_proxy=http://proxy.example.com:80"
environment="https_proxy=https://proxy.example.com:443"

如果你自己建了私有的镜像仓库,需要 dockerd 绕过代理服务器直连,那么配置 no_proxy 变量:

[service]
environment="http_proxy=http://proxy.example.com:80"
environment="https_proxy=https://proxy.example.com:443"
environment="no_proxy=your-registry.com,10.10.10.10,*.example.com"

多个 no_proxy 变量的值用逗号分隔,而且可以使用通配符(*),极端情况下,如果 no_proxy=*,那么所有请求都将不通过代理服务器。

2、重新加载配置文件,重启 dockerd

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

3、检查确认环境变量已经正确配置:

$ sudo systemctl show --property=environment docker

从 docker info 的结果中查看配置项。

这样配置后,应该可以正常拉取 docker 镜像。

总结

到此这篇关于如何配置docker通过代理服务器拉取镜像的文章就介绍到这了,更多相关docker通过代理服务器拉取镜像内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com