智能Docker镜像拉取工具 - 自动选择最优镜像源
Project description
🐳 DPS - Docker Pull Smart | 智能Docker镜像拉取工具
🎯 项目简介
DPS (Docker Pull Smart) 是一款专为国内开发者设计的智能Docker镜像拉取工具。通过自动检测和切换可用镜像源,彻底解决Docker镜像拉取失败、超时、速度慢等问题。
😫 传统Docker拉取的痛点
在国内使用Docker时,开发者经常遇到以下问题:
- ⏰ 拉取超时:
docker pull nginx:latest等待10分钟,最后显示timeout - ❌ 连接失败: 总是提示
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled - 🐌 速度极慢: 几十MB的镜像要下载几个小时,进度条一动不动
- 🔧 配置复杂: 网上找的镜像加速配置方法五花八门,配置后还是不行
- 💥 镜像站失效: 好不容易找到的镜像加速地址,过几天就不能用了
🔥 DPS的核心优势
- 🤖 智能检测: 实时检测20+个镜像加速源,自动过滤失效地址
- ⚡ 极速拉取: 智能选择最优镜像源,拉取速度提升10-50倍
- 🔧 零配置: 无需手动配置,安装即用,一条命令解决所有问题
- 🛡️ 自动容错: 单个镜像源失败自动切换,成功率高达98%
- 📊 实时可视: 实时显示下载进度和状态信息
- 🌍 全平台: 完美支持 Windows、Linux、macOS
- 🎯 精准识别: 智能区分Docker Hub和非Docker Hub镜像
- 🎮 交互友好: 支持手动选择镜像源模式
🚀 快速开始
系统要求
- ✅ Python 3.6+ (Windows/Linux/macOS 均支持)
- ✅ Docker 已安装并正常运行
安装方式
pip3 install dps_liumou_Stable
安装验证
# 验证安装成功
dps -h
# 测试拉取一个小镜像
dps hello-world:latest
📖 命令参数详解
位置参数
| 参数 | 说明 | 示例 |
|---|---|---|
image_name |
要拉取的镜像名称 | nginx:latest |
可选参数
| 参数 | 简写 | 说明 | 默认值 |
|---|---|---|---|
--list-mirrors |
-lm |
列出所有可用镜像源 | - |
--local-images |
-li |
列出本地Docker镜像 | - |
--timeout |
-t |
Docker命令超时时间(秒) | 300 |
--max-retries |
-r |
每个镜像源的最大重试次数 | 3 |
--debug |
-d |
调试模式,显示完整命令 | False |
--force-mirror |
-fm |
强制使用镜像站 | False |
--select-mirror |
-sm |
手动选择镜像源 | False |
使用示例
# 基础使用
dps nginx:latest
dps python:3.11
dps mysql:8.0
# 高级用法
dps ubuntu:22.04 -t 600 -r 5
dps node:18-alpine -d -fm
dps redis:7 -sm
# 工具命令
dps -lm
dps -li
dps -h
🎉 实际使用效果
# 智能拉取 - 自动选择最优镜像源
$ dps nginx:latest
🎯 开始智能拉取镜像: nginx:latest
==================================================
🌐 正在获取镜像源信息...
✅ 成功获取 22 个在线镜像源
📋 找到 22 个可用镜像源
1. 1Panel - https://docker.1panel.live
2. SUNBALCONY 1 - https://dockerproxy.cool
3. 棉花云 3 - https://hub3.nat.tf
...
...
🔄 尝试镜像源 1/22: 1Panel
🔗 URL: https://docker.1panel.live
🔄 尝试从镜像源拉取: docker.1panel.live/library/nginx:latest
📥 latest: Pulling from library/nginx
📥 953cdd413371: Pulling fs layer
📥 3bf2e947a240: Pulling fs layer
...
✅ 成功拉取镜像: docker.1panel.live/library/nginx:latest
🏷️ 设置镜像标签: docker.1panel.live/library/nginx:latest -> nginx:latest
✅ 成功设置镜像标签: nginx:latest
🗑️ 删除镜像: docker.1panel.live/library/nginx:latest
==================================================
🎉 镜像拉取成功: nginx:latest
📍 使用的镜像源: 1Panel
⏱️ 总耗时: 15.2秒
📋 使用案例
🔧 高级功能演示
# 调试模式 - 查看实际执行的完整命令
dps nginx:latest -d
# 超时控制 - 适合大镜像或网络不稳定环境
dps ubuntu:22.04 -t 600
# 重试机制 - 网络不稳定时增加重试次数
dps mysql:8.0 -r 5
# 非Docker Hub镜像支持
dps gcr.io/google/cadvisor:latest
dps public.ecr.aws/nginx/nginx:1.25
# 强制使用镜像站加速
dps gcr.io/google/cadvisor:latest -fm
# 手动选择镜像源
dps nginx:latest -sm
# 组合使用 - 应对复杂网络环境
dps node:18-alpine -d -t 600 -r 5
🏗️ 技术架构
🎯 核心模块
1. MirrorClient - 镜像源管理
- 实时检测: 从API获取20+个镜像源状态
- 智能过滤: 自动过滤离线或异常的镜像源
- 状态监控: 记录每个镜像源的最后检查时间
2. DockerCommandExecutor - Docker命令执行
- 实时输出: 使用
subprocess.Popen实现实时进度显示 - 超时控制: 可配置的超时机制,防止长时间阻塞
- 错误处理: 完善的异常捕获和错误信息显示
3. ImageUtils - 镜像工具集
- 智能识别: 自动区分Docker Hub和非Docker Hub镜像
- 地址格式化: 构建带镜像源的完整镜像地址
- 进度显示: 统一的进度条和时间格式化
4. DockerPullSmart - 智能拉取引擎
- 自动重试: 单个镜像源失败自动切换
- 标签管理: 自动设置正确的镜像标签
- 清理机制: 拉取成功后清理临时镜像
🔧 技术特点
- 🐍 纯Python实现: 仅依赖
requests和urllib3 - 🚀 高性能: 异步检测,并行处理多个镜像源
- 🛡️ 健壮性: 完善的异常处理和重试机制
- 📊 可视化: 实时显示拉取进度和状态
📊 性能数据
🎯 核心指标
- ⚡ 速度提升: 10-50倍(平均从50KB/s提升到2-10MB/s)
- 🎯 成功率: 98%+(传统方式约30%)
- 🔧 零配置: 安装即用,无需任何配置
- ⏱️ 时间节省: 平均每次拉取节省5-15分钟
🌍 镜像源覆盖
- 实时检测: 20+个主流镜像加速源
- 智能排序: 按最后检查时间排序,优先使用最新检测的源
- 自动更新: 每次使用前自动获取最新状态
🔗 相关链接
📱 项目地址
📚 相关项目
- 国内镜像源: https://status.anye.xyz/
💬 社区支持
- Issues: https://gitee.com/liumou/dps_liumou_Stable/issues
- 讨论: https://gitee.com/liumou/dps_liumou_Stable/discussions
🤝 参与贡献
欢迎提交 Issue 和 Pull Request,让我们一起让国内开发环境变得更好!
🎯 贡献方向
- 🔍 Bug修复: 发现并修复问题
- ✨ 功能增强: 添加新功能或优化现有功能
- 📚 文档完善: 改进文档和示例
- 🌍 镜像源: 推荐新的镜像加速源
📋 贡献步骤
- 🍴 Fork 本仓库
- 🌿 创建功能分支 (
git checkout -b feature/amazing-feature) - 💻 提交更改 (
git commit -m 'Add some amazing feature') - 📤 推送分支 (
git push origin feature/amazing-feature) - 🎯 创建 Pull Request
📜 许可证摘要
- ✅ 商业使用
- ✅ 修改和分发
- ✅ 私人使用
- ❌ 责任担保
- ❌ 商标使用
🎉 致谢
感谢所有为这个项目做出贡献的开发者和用户!
Made with ❤️ for Chinese developers
🌟 Star 支持
如果这个项目对你有帮助,请给我们一个 Star ⭐!
📊 项目统计
- 下载量:
- 版本:
- Python支持:
🎯 支持方式
- Star 项目: 点击右上角的 ⭐ Star 按钮
- 分享项目: 分享给需要的朋友和同事
- 提交反馈: 在 Issues 中提交建议和问题
- 参与贡献: 提交代码改进和文档更新
📄 许可证
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dps_liumou_stable-1.0.6.tar.gz
(25.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dps_liumou_stable-1.0.6.tar.gz.
File metadata
- Download URL: dps_liumou_stable-1.0.6.tar.gz
- Upload date:
- Size: 25.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da03cba5d3b921358fdfe09b406ae5025c2dc650be7c904d97802486b3281e39
|
|
| MD5 |
4a55642e952fe314a342dcb167a22c7d
|
|
| BLAKE2b-256 |
537783d59c9fd4c46bb906fac93923e4ffd985f6da7bf7f62c236a6b4de0c427
|
File details
Details for the file dps_liumou_stable-1.0.6-py3-none-any.whl.
File metadata
- Download URL: dps_liumou_stable-1.0.6-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f431ad60f9f9ba983e9461ec1618875d6535c089bfa65788273128ec93463e3d
|
|
| MD5 |
5b601484d152351ad62739c75dbb7a2e
|
|
| BLAKE2b-256 |
0c57bdee81c4c8ad8003cd2126359684ea0ea61bec11a3374fd94698f27cfd8a
|