-
Notifications
You must be signed in to change notification settings - Fork 53
Open
Description
源码:https://github.com/duma520/Docker_Image_Puller_dumafu
详细说明书:
🤖 Assistant
Docker镜像下载工具 v16.0.0 使用说明书
目录
1. 产品概述
1.1 功能特性
- 多架构镜像下载(支持amd64/arm等)
- 断点续传与自动重试机制
- 完整性校验(SHA256哈希验证)
- 两种打包格式支持:
- 标准Docker格式
- 群晖NAS专用格式
- 代理服务器支持
- 多线程下载控制
1.2 适用场景
- 离线环境部署Docker镜像
- 企业内网镜像仓库同步
- 容器镜像归档备份
- 跨架构镜像转换
1.3 系统要求
| 环境 | 要求 |
|---|---|
| 操作系统 | Windows/macOS/Linux |
| Python版本 | ≥3.8 |
| 内存 | ≥512MB |
| 磁盘空间 | 镜像大小×2 |
2. 快速入门
2.1 基础使用(新手用户)
# 下载最新版Ubuntu镜像
python main.py ubuntu -o ./my_images
# 下载指定版本的Nginx镜像
python main.py nginx:1.21 -o ./web_server下载完成后在./my_images目录中会生成:
[镜像名].tar:打包好的镜像文件docker_pull.log:操作日志文件
2.2 常用参数速查
| 参数 | 说明 | 示例 |
|---|---|---|
| -a | 指定CPU架构 | -a arm64 |
| -r | 自定义镜像仓库地址 | -r my.registry.com |
| --insecure | 跳过SSL证书验证 | --insecure |
| -j | 多线程下载数(提升速度) | -j 3 |
3. 详细使用指南
3.1 参数详解
python main.py [镜像名称] [选项]
必选参数:
image 镜像名称格式:
[仓库/]镜像名[:标签]
示例:library/ubuntu:22.04
选项:
-a ARCH, --arch ARCH
目标架构(默认:amd64)
※ 支持:amd64, arm64, arm/v7等
-r REGISTRY, --registry REGISTRY
镜像仓库地址(默认:registry-1.docker.io)
-o OUTPUT, --output OUTPUT
输出目录(默认:./output)
-j WORKERS, --workers WORKERS
并发下载线程数(默认:1)
※ 建议值:2-5(根据网络带宽调整)
-f FORMAT, --format FORMAT
打包格式选择:
docker - 标准Docker格式
synology - 群晖专用格式(默认)
--insecure 禁用SSL证书验证(仅测试环境使用)
--debug 启用调试日志模式3.2 工作流程
- 镜像解析:解析输入镜像名称
- 认证获取:获取Docker Registry访问令牌
- 清单下载:获取镜像架构清单
- 分层下载:并行下载镜像层文件
- 完整性校验:逐层验证SHA256哈希
- 镜像打包:按指定格式生成最终镜像包
4. 技术架构
4.1 核心模块
graph TD
A[命令行解析] --> B[认证管理]
B --> C[清单获取]
C --> D[分层下载器]
D --> E[完整性验证]
E --> F[镜像打包]
4.2 关键技术点
-
自适应认证:自动处理令牌过期和刷新
-
分块校验:每512KB数据块实时校验
-
智能重试:三级重试策略:
- 瞬时错误(HTTP 5xx):指数退避重试
- 网络中断:断点续传
- 认证失效:令牌自动刷新
-
安全机制:
- 临时文件隔离存储
- 下载失败自动清理残留
- 内存安全的数据流处理
5. 故障排除
5.1 常见问题速查表
| 现象 | 解决方案 |
|---|---|
| 下载速度慢 | ① 使用-j增加线程数② 检查网络代理设置 |
| 提示"SSL证书验证失败" | 添加--insecure参数 |
| 报错"未找到架构" | ① 确认镜像支持该架构 ② 使用 -a指定正确架构 |
| 文件校验失败 | ① 重试下载 ② 检查存储空间是否充足 |
| 提示"认证失败" | ① 检查镜像名称拼写 ② 确认仓库访问权限 |
5.2 日志分析指南
日志文件位置:[输出目录]/docker_pull.log
关键日志标记:
[DEBUG]:调试信息(需启用--debug参数)[WARNING]:非致命性警告[ERROR]:需要立即处理的错误
典型错误处理:
ERROR 401 Unauthorized
→ 解决方案:检查镜像名称格式是否正确,确认是否有访问权限
ERROR 证书验证失败
→ 添加--insecure参数或配置SSL证书:
export REQUESTS_CA_BUNDLE=/path/to/cert.pem
ERROR 磁盘空间不足
→ 清理存储空间或指定更大容量的输出目录
6. 高级配置
6.1 代理设置
# 临时设置代理
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080"
# 使用代理下载
python main.py ubuntu --output ./proxy_download6.2 自定义超时设置
通过修改源代码全局变量(需Python知识):
# 文件: main.py
CHUNK_SIZE = 1024 * 512 # 下载分块大小
MAX_RETRIES = 5 # 最大重试次数
RETRY_DELAY = 10 # 重试间隔(秒)6.3 企业级部署建议
- 镜像缓存服务器:配置本地Registry仓库
- 安全加固:
- 删除
--insecure参数 - 设置可信证书目录
- 删除
- 自动化集成:
# 示例:Jenkins流水线集成 python main.py ${IMAGE_NAME} \ -a ${TARGET_ARCH} \ -o ${WORKSPACE}/build \ -f docker
7. 附录
7.1 版本更新记录
| 版本 | 更新内容 |
|---|---|
| v16.0.0 | 初始发布版本 |
7.2 技术支持
联系开发者:杜玛
邮箱:无
问题反馈模板:
[操作系统版本]:
[Python版本]:
[复现步骤]:
[相关日志片段]:
[网络环境]:
7.3 法律声明
本工具遵循MIT开源协议,使用Docker API时请遵守Docker服务条款。
注意事项:
- 生产环境使用前请进行充分测试
- 敏感镜像下载请遵守相关法律法规
- 定期检查更新以获取安全补丁
[文档版本:2025-03-11] [生成工具:docker_pull v16.0.0]
Metadata
Metadata
Assignees
Labels
No labels