2026年2026年Docker国内镜像源加速[可运行源码]

2026年Docker国内镜像源加速[可运行源码]usr bin env python3 coding utf 8 Docker 镜像源速度测试工具 基于博客内容 https blog csdn net yangzhihua article details 最后更新 2026 年 4 月 14 日

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

#!/usr/bin/env python3

-- coding: utf-8 --

""" Docker 镜像源速度测试工具 基于博客内容:https://blog.csdn.net/yangzhihua/article/details/ 最后更新:2026 年 4 月 14 日 """

import json import subprocess import time from datetime import datetime from typing import Dict, List, Tuple

class DockerMirrorTester:

"""Docker 镜像源测试器""" def __init__(self): self.mirrors = [ { "url": "https://docker.xuanyuan.me", "name": "轩辕镜像(免费版)", "type": "公益加速" }, { "url": "https://docker.1ms.run", "name": "毫秒镜像", "type": "商业服务" }, { "url": "https://docker.m.daocloud.io", "name": "DaoCloud 镜像站", "type": "公益" } ] self.test_image = "nginx:alpine" self.results = [] def check_docker_installed(self) -> bool: """检查 Docker 是否已安装""" try: result = subprocess.run( ["docker", "--version"], capture_output=True, text=True, timeout=5 ) if result.returncode == 0: print(f"✓ Docker 已安装:{result.stdout.strip()}") return True else: print("✗ Docker 未正确安装") return False except (subprocess.TimeoutExpired, FileNotFoundError): print("✗ Docker 未安装或不在 PATH 中") return False def test_mirror_speed(self, mirror_url: str, mirror_name: str) -> Tuple[float, bool]: """测试单个镜像源的速度""" print(f" 

正在测试:{mirror_name} ({mirror_url})")

 # 构建镜像地址 image_path = f"{mirror_url.replace('https://', '')}/library/{self.test_image}" start_time = time.time() success = False try: # 尝试拉取镜像 result = subprocess.run( ["docker", "pull", image_path], capture_output=True, text=True, timeout=120 # 2 分钟超时 ) elapsed_time = time.time() - start_time if result.returncode == 0: success = True print(f"✓ 拉取成功,耗时:{elapsed_time:.2f}秒") # 清理拉取的镜像 subprocess.run( ["docker", "rmi", image_path], capture_output=True, timeout=30 ) else: print(f"✗ 拉取失败:{result.stderr[:200]}") except subprocess.TimeoutExpired: elapsed_time = 120 print("✗ 测试超时(>2 分钟)") except Exception as e: elapsed_time = 0 print(f"✗ 测试异常:{str(e)}") return elapsed_time, success def run_all_tests(self): """运行所有镜像源测试""" print("=" * 60) print("Docker 镜像源速度测试工具") print("数据来源:https://blog.csdn.net/yangzhihua/article/details/") print("=" * 60) # 检查 Docker if not self.check_docker_installed(): print(" 

请安装 Docker 后重新运行此脚本")

 print("安装命令:curl -fsSL https://get.docker.com | bash") return print(f" 

测试镜像:{self.test_image}")

 print(f"测试时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") print("-" * 60) # 测试每个镜像源 for mirror in self.mirrors: elapsed, success = self.test_mirror_speed( mirror["url"], mirror["name"] ) self.results.append({ "url": mirror["url"], "name": mirror["name"], "type": mirror["type"], "elapsed_time": elapsed, "success": success }) # 显示结果 self.show_results() def show_results(self): """显示测试结果""" print(" 

" + "=" * 60)

 print("测试结果汇总") print("=" * 60) # 按成功率排序 success_mirrors = [r for r in self.results if r["success"]] failed_mirrors = [r for r in self.results if not r["success"]] if success_mirrors: print(" 

✅ 可用的镜像源:")

 for i, result in enumerate(success_mirrors, 1): speed = "未知" if result["elapsed_time"] == 0 else f"{result['elapsed_time']:.2f}秒" print(f"{i}. {result['name']}") print(f" URL: {result['url']}") print(f" 类型:{result['type']}") print(f" 耗时:{speed}") print() if failed_mirrors: print(" 

❌ 不可用的镜像源:")

 for result in failed_mirrors: print(f"- {result['name']} ({result['url']})") # 保存结果 self.save_results() def save_results(self): """保存测试结果到文件""" result_file = "test_results.json" with open(result_file, 'w', encoding='utf-8') as f: json.dump({ "test_time": datetime.now().isoformat(), "test_image": self.test_image, "results": self.results }, f, ensure_ascii=False, indent=2) print(f" 

测试结果已保存到:{result_file}")

def main():

"""主函数""" tester = DockerMirrorTester() tester.run_all_tests() 

if name == "main":

main() 
小讯
上一篇 2026-04-19 17:08
下一篇 2026-04-19 17:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271841.html