DockerMirrorRanker 是一个用于测试和排名 Docker 镜像源速度和可用性的工具。在国内使用 Docker 时,由于网络原因,官方的 Docker Hub 往往速度较慢。本工具可以帮助您从众多镜像源中筛选出最快、最稳定的镜像源,提升 Docker 镜像拉取速度。
- 🚀 自动测试多个 Docker 镜像源的连通性和响应速度
- ⚡ 并发测试提高效率,快速得出结果
- 📊 按照成功率和响应时间排序,筛选出最佳镜像源
- 📝 生成可直接使用的镜像源列表
- 🎨 彩色终端输出,测试过程一目了然
- Python 3.6 或更高版本
- 安装所需依赖:
requests
本项目使用 uv 进行快速、可靠且可复现的依赖管理。uv.lock 文件确保所有开发者使用完全相同的包版本,避免"在我机器上能运行"的问题,并提供跨不同 Python 版本的兼容依赖。
如果您还没有安装 uv,请先安装:
# 使用 pip 安装
pip install uv
# 或者使用独立二进制文件(推荐用于 CI/CD)
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh使用 uv 基于 uv.lock 文件安装所有项目依赖:
uv sync如果您不想使用 uv,也可以使用传统的 pip 安装:
pip install requests或者从 pyproject.toml 安装:
pip install .- 访问 CodeJia 博客 获取最新的 Docker 镜像源列表
- 将镜像源列表保存为
mirrors.md文件,确保格式如下:
| DockerHub 镜像仓库 | 是否正常 |
|-----------------------------|------|
| `mirror1.example.com` | 正常 |
| `mirror2.example.com` | 正常 |
| `mirror3.example.com` | 新增 |
| `mirror4.example.com` | 失效 |💡 注意:脚本只会测试标记为"正常"或"新增"的镜像源
python docker_mirror_tester.py脚本运行完成后,会在控制台显示测试结果,并生成 valid_mirrors.txt 文件,包含所有可用的镜像源地址。
测试结果示例:
成功加载 16 个有效镜像
开始测试镜像加速器...
▶ Testing https://mirror1.example.com
Attempt 1: 200 OK (0.32s)
Attempt 2: 200 OK (0.28s)
...
✓ 最终结果: 成功率 100.0% | 平均响应 0.30s
...
测试结果排序(最佳到最差):
1. https://best-mirror.example.com (成功率: 100.0%, 响应: 0.25s)
2. https://good-mirror.example.com (成功率: 100.0%, 响应: 0.30s)
...
总测试时间: 15.3秒
可用镜像列表(过滤零成功率镜像):
1. https://best-mirror.example.com
2. https://good-mirror.example.com
...
生成可用镜像列表:10 条 → valid_mirrors.txt
您可以将 valid_mirrors.txt 中的镜像源地址配置到 Docker 的 daemon.json 文件中:
Linux/macOS: /etc/docker/daemon.json
Windows: C:\ProgramData\docker\config\daemon.json
{
"registry-mirrors": [
"https://best-mirror.example.com",
"https://good-mirror.example.com"
]
}配置完成后,重启 Docker 服务:
# Linux
sudo systemctl restart docker
# Windows/macOS
# 在 Docker Desktop 中重启- 从
mirrors.md文件中读取标记为"正常"或"新增"的镜像源地址 - 对每个镜像源进行 5 次连接测试,记录成功率和平均响应时间
- 使用线程池并发测试(最大并发数为 10),提高测试效率
- 根据成功率和响应时间对镜像源进行排序(成功率优先,响应时间次之)
- 生成可用镜像源列表,保存到
valid_mirrors.txt文件
DockerMirrorRanker/
├── .python-version # Python 版本声明文件
├── pyproject.toml # 项目配置和依赖定义
├── uv.lock # 依赖锁定文件(由 uv 生成)
├── docker_mirror_tester.py # 主测试脚本
├── mirrors.md # 镜像源列表(需要手动创建)
├── valid_mirrors.txt # 测试结果输出(自动生成)
└── README.md # 项目说明文档
如果需要添加或更新依赖,请修改 pyproject.toml 文件,然后重新生成锁定文件并同步环境:
uv lock
uv sync
⚠️ 注意:uv.lock文件是自动生成的,请勿手动编辑。
- 感谢 CodeJia 博客 提供的镜像源列表
- 感谢 Astral 团队开发的
uv工具
如果这个项目对您有帮助,欢迎 Star ⭐