当前位置: 首页 > news >正文

破解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.com"
  }
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

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

# 重载配置并重启服务
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.com"

重新加载配置文件,重启 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 https://registry.hub.docker.com

参数说明

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

示例:

# curl -v --proxy http://192.168.1.10:7890 https://registry.hub.docker.com
*   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.com:443
> CONNECT registry.hub.docker.com:443 HTTP/1.1
> Host: registry.hub.docker.com: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 https://registry.hub.docker.com

绕过代理测试

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

相关文章:

  • 【JMeter使用-2】JMeter中Java Request采样器的使用指南
  • 【教学类-89-06】20250220新年篇05——元宵节灯笼
  • 机器学习实战:从理论到应用的完整指南
  • 优艾智合获批广东省复合协作机器人工程技术研究中心
  • 【C#】无法安装程序包“DotSpatial.Symbology 4.0.656”
  • jsherp importItemExcel接口存在SQL注入
  • uniapp多端适配
  • 【C语言】CreateFile函数用法介绍
  • 【AI应用】Cherry Studio结合deepseek搭建本地知识库
  • 实时股票行情接口与WebSocket行情接口的应用
  • 爬虫获取数据后的清洗与校验:完整指南
  • 三甲医院网络架构与安全建设实战
  • 科技快讯 | 京东为外卖骑手缴纳五险一金;全3D打印电喷雾发动机问世;小红书:3个月处置超300万违规账号
  • 【Mysql】我在广州学Mysql 系列—— 有关日志管理的示例
  • ASUS/华硕无畏Pro15 K6500Z 原厂Win11 22H2系统 工厂文件 带ASUS Recovery恢复
  • vue2的计算属性
  • 什么是业务流程分类框架
  • 水利水电安全员主要做什么?其任职资格有哪些?
  • 如何使用springboot项目如何实现小程序里面商品的浏览记录功能案例
  • Spring--BeanDefinition的用法
  • 人民时评:透过上海车展读懂三组密码
  • 印度外交秘书:“朱砂行动”不针对军事设施,无意升级事态
  • 扶桑谈|素称清廉的石破茂被曝受贿,日本政坛或掀起倒阁浪潮
  • 咖啡戏剧节举办第五年,上生新所“无店不咖啡,空间皆可戏”
  • 上海明后天将迎强风大雨,陆地最大阵风7~9级
  • 同观·德国|默茨当总理后,能否带领德国在欧盟“说了算”?