logo
0
0
WeChat Login
fix: 更新镜像源选择逻辑,默认选择全部镜像源并更新相关文档说明

Docker镜像源配置工具(增强版)

这是一个用于配置Docker镜像源的增强版工具,提供 Python版Bash版 两种实现,可以自动检测、评估和配置最佳的Docker镜像源,提高Docker镜像拉取速度。

功能特点

  • 🔍 实时数据获取:从官方监控API获取真实的Docker镜像源状态
  • 智能排序:自动按ping值排序,优先显示最快的镜像源
  • 🔧 有效性检测:自动检测当前配置的镜像源有效性
  • 🧹 智能清理:支持清理失效的镜像源
  • 🔄 灵活配置:支持替换或追加镜像源配置模式
  • 🛡️ 可靠性保证:严格的错误处理,确保只使用真实有效的镜像源
  • 🌐 跨平台支持:提供Python和Bash两种版本,适应不同环境需求
  • 🛠️ 自动依赖安装:自动识别操作系统并安装缺失的 curl/jq 依赖

使用方法

Python版本(适用于Windows/Linux/macOS)

  1. 运行脚本:
    python docker_mirror_config.py

Bash版本(适用于Linux系统)

  1. 运行脚本:

    sudo ./docker-mirror-config.sh
  2. 脚本会首先测试API连接,然后检查当前配置的镜像源有效性

  3. 如果发现失效的镜像源,会询问是否清理

  4. 脚本会获取并显示可用的镜像源列表(按延迟排序)

  5. 选择要使用的镜像源(输入序号,用逗号分隔,如"1,3";直接回车使用全部)

  6. 选择操作模式:

    • 1 = 替换为新源
    • 2 = 追加到现有有效源
  7. 确认是否写入配置并重启Docker服务

调试模式

如果遇到问题,可以使用调试模式来测试API连接:

  1. 打开脚本文件
  2. 找到最后几行代码
  3. 取消注释test_heartbeat_api()行,注释main()
  4. 运行脚本

技术说明

镜像源获取机制

  1. 主要数据源:通过API获取心跳数据和节点信息

    https://status.1panel.top/api/status-page/heartbeat/docker
  2. 备用机制:当API不可用或数据解析失败时,使用内置的备用镜像源列表

错误处理

  • 网络连接错误处理
  • API数据结构变化适应
  • JSON解析错误处理
  • 配置文件权限错误处理

最近修复与优化

  • 重大修复:完全重写了数据解析逻辑,现在可以正确解析真实的API数据
  • 功能增强:成功获取真实的Docker镜像源列表,包含实时ping值
  • 数据准确性:从 window.preloadData 中提取真实的镜像源URL和对应的心跳数据
  • 性能优化:按ping值自动排序,优先显示延迟最低的镜像源
  • 代码优化:移除备用镜像源逻辑,确保获取的都是真实有效的镜像源
  • 错误处理:改进错误处理机制,API失败时直接退出而非使用备用源
  • 代码简化:移除调试功能和冗余代码,提高代码可读性和执行效率
  • 兼容性:提供Python和Bash两个版本,适应不同环境需求
  • 重大修复:完全重写了数据解析逻辑,现在可以正确解析真实的API数据
  • 功能增强:成功获取真实的Docker镜像源列表,包含实时ping值
  • 数据准确性:从 window.preloadData 中提取真实的镜像源URL和对应的心跳数据
  • 性能优化:按ping值自动排序,优先显示延迟最低的镜像源
  • 代码优化:移除备用镜像源逻辑,确保获取的都是真实有效的镜像源
  • 错误处理:改进错误处理机制,API失败时直接退出而非使用备用源
  • 代码简化:移除调试功能和冗余代码,提高代码可读性和执行效率
  • 兼容性:提供Python和Bash两个版本,适应不同环境需求
  • 细节优化:完善了交互提示和配置确认流程,提升用户体验
  • 自动依赖安装:支持自动检测系统并一键安装 curl/jq 依赖,无需手动操作

实际测试结果

最新版本已成功获取到以下真实镜像源(示例):

系统要求

Python版本

  • Python 3.6+
  • 需要requests库:pip install requests
  • 需要root/管理员权限来修改Docker配置和重启服务

Bash版本

  • Linux系统(Ubuntu、CentOS、Debian等)
  • 需要以下命令:curljqdocker
  • 安装依赖:
    # Ubuntu/Debian sudo apt-get install curl jq # CentOS/RHEL sudo yum install curl jq
  • 需要root权限运行

版本对比

特性Python版Bash版
跨平台支持✅ Windows/Linux/macOS❌ 仅Linux
依赖要求Python + requestscurl + jq
安装复杂度中等简单
执行速度中等
调试功能丰富基础
推荐场景开发环境、Windows用户Linux服务器、生产环境

注意事项

  • 在生产环境中使用前,请先在测试环境验证
  • 修改配置前会提示确认
  • 如果Docker服务重启失败,请手动执行sudo systemctl restart docker
  • Bash版本仅适用于Linux系统,Windows用户请使用Python版本
  • 两个版本功能基本一致,可根据环境选择合适的版本

维护者

  • alxxxxla