主页 > IT业界  > 

破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取

破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取

为Docker配置代理加速镜像拉取 概述守护进程配置(推荐长期使用)Systemd环境变量配置(适合临时调整)其他

概述

为什么需要配置代理与镜像加速?

跨国网络限制:境外镜像仓库拉取速度慢或无法访问 企业安全策略:通过统一代理服务器进行网络审计和管控

两种代理配置方式对比

配置方式生效范围持久性适用场景daemon.json守护进程级别永久生效固定代理服务器Systemd环境变量系统服务级别需reload动态调整代理设置

参考官方文档:Daemon proxy configuration

守护进程配置(推荐长期使用)

编辑vim /etc/docker/daemon.json进行配置

{ "proxies": { "http-proxy": "http://192.168.1.1:7890", "https-proxy": "http://192.168.1.1:7890", "no-proxy": "localhost,127.0.0.1,*.test.example " } "registry-mirrors": [" registry.docker-cn "] }

重新启动守护进程以使代理配置生效

# 重载配置并重启服务 sudo systemctl daemon-reload sudo systemctl restart docker # 验证配置 docker info | grep -i proxy Systemd环境变量配置(适合临时调整)

Docker守护进程会在启动环境中检查以下环境变量,以配置 HTTP 或 HTTPS 代理行为:

HTTP_PROXY HTTPS_PROXY NO_PROXY

创建一个名为/etc/systemd/system/docker.service.d的目录,这种.d目录下的配置将覆盖默认配置

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

创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf的文件

vim /etc/systemd/system/docker.service.d/proxy.conf

添加HTTP_PROXY环境变量

[Service] Environment="HTTP_PROXY=http://192.168.1.1:7890/" Environment="HTTPS_PROXY=http://192.168.1.1:7890/" # 如果`NO_PROXY=*`,那么所有请求都将不通过代理服务器,如指定本地私有的镜像仓库地址 Environment="NO_PROXY=127.0.0.1,localhost,192.168.*,*.example "

重新加载配置文件,重启 Dockerd 才能生效

systemctl daemon-reload systemctl restart docker

验证环境变量,确认环境变量已经正确配置

systemctl show --property=Environment docker

从docker info的结果中也可以查看到配置项

# docker info Docker Root Dir: /var/lib/docker Debug Mode: false HTTP Proxy: http://192.168.1.1:7890 HTTPS Proxy: http://192.168.1.1:7890 No Proxy: 127.0.0.1,localhost Experimental: false

注意:

若需身份验证,使用http://用户名:密码@代理IP:端口格式

临时禁用代理

# 临时禁用代理 sudo systemctl set-environment HTTP_PROXY="" sudo systemctl restart docker # 查看实时日志 journalctl -u docker.service -f 其他

代理连通性测试

curl -v -x http://proxy:port registry.hub.docker

参数说明

-v 参数 作用:开启详细模式(verbose) -x 参数 全称:--proxy 格式:[协议://]主机:端口

示例:

# curl -v --proxy http://192.168.1.10:7890 registry.hub.docker * Trying 192.168.1.10:7890... * Connected to 192.168.1.10 (192.168.1.10) port 7890 * CONNECT tunnel: HTTP/1.1 negotiated * allocate connect buffer * Establish HTTP proxy tunnel to registry.hub.docker :443 > CONNECT registry.hub.docker :443 HTTP/1.1 > Host: registry.hub.docker :443 > User-Agent: curl/8.5.0 > Proxy-Connection: Keep-Alive > < HTTP/1.1 200 Connection established <

代理认证测试

curl -v -x http://user:password@ip:port registry.hub.docker

绕过代理测试

# curl -v --noproxy '*' registry.hub.docker * Host registry.hub.docker :443 was resolved. * IPv6: (none) * IPv4: 31.13.95.37 * Trying 31.13.95.37:443...
标签:

破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取