clean_old_versions.py使用指南:自动化清理Docker镜像历史版本 📅 2026/7/21 19:57:18 clean_old_versions.py使用指南自动化清理Docker镜像历史版本【免费下载链接】delete-docker-registry-imageIf you are running a private v2 docker registry, and you are storing your data on disk, running this script from the machine where the data lives will let you fully delete an image or tag项目地址: https://gitcode.com/gh_mirrors/de/delete-docker-registry-imageDocker私有仓库的存储空间管理一直是运维人员的痛点。随着持续集成和持续部署的广泛应用Docker镜像版本会快速积累占用大量磁盘空间。clean_old_versions.py脚本为您提供了一种智能、自动化的解决方案帮助您轻松清理Docker Registry中的旧版本镜像释放宝贵的存储空间。为什么需要自动化清理Docker镜像在Docker私有仓库中每次构建都会产生新的镜像标签。如果不定期清理仓库会迅速膨胀开发环境每天多次构建产生数十个版本生产环境保留过多历史版本浪费存储资源安全考虑旧版本可能存在已知漏洞需要清理clean_old_versions.py脚本正是为解决这些问题而设计的自动化工具它通过智能筛选和批量删除机制让Docker仓库维护变得简单高效。快速安装与配置首先需要安装主脚本delete_docker_registry_image.pycurl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image /dev/null sudo chmod ax /usr/local/bin/delete_docker_registry_image然后设置环境变量指向您的Docker Registry数据目录export REGISTRY_DATA_DIR/opt/registry_data/docker/registry/v2clean_old_versions.py脚本位于项目根目录可以直接使用。确保您的Python环境已安装requests库pip install requests核心功能详解1. 按正则表达式筛选镜像和标签脚本支持使用正则表达式精确匹配要清理的镜像和标签# 清理所有以repo/sitor开头的镜像 ./clean_old_versions.py --image ^repo/sitor* # 只清理标签以0.1.开头的版本 ./clean_old_versions.py --image ^repo/sitor* --include ^0.1.* # 排除特定标签如保留latest标签 ./clean_old_versions.py --image ^repo/sitor* --exclude ^latest$2. 保留最近N个版本最常见的清理策略是保留最新的几个版本# 保留最近5个版本默认 ./clean_old_versions.py --image ^myapp/* # 保留最近10个版本 ./clean_old_versions.py --image ^myapp/* -l 10 # 保留最近2个版本按创建时间排序 ./clean_old_versions.py --image ^myapp/* -l 2 -o date3. 按时间范围清理按镜像创建时间进行精确筛选# 删除2016年1月1日之后创建的版本 ./clean_old_versions.py --image ^repo/* -a 2016-01-01T00:00:00 # 删除2016年6月25日之前创建的版本 ./clean_old_versions.py --image ^repo/* -b 2016-06-25T12:00:00 # 删除指定时间范围内的版本 ./clean_old_versions.py --image ^repo/* -a 2016-01-01T00:00:00 -b 2016-06-25T12:00:004. 认证与安全配置支持需要认证的私有仓库# 使用用户名密码认证 ./clean_old_versions.py --image ^repo/* -U username -P password # 指定Registry URL ./clean_old_versions.py --image ^repo/* --registry-url http://registry.example.com:5000 # 禁用SSL证书验证测试环境 ./clean_old_versions.py --image ^repo/* --no_check_certificate实用场景与最佳实践场景一开发环境日常清理开发团队每天产生大量测试镜像可以设置定时任务# 每天凌晨清理开发环境保留最近3个版本 0 2 * * * cd /opt/scripts ./clean_old_versions.py --image ^dev/* -l 3 --registry-url http://dev-registry:5000场景二生产环境版本控制生产环境需要更谨慎的清理策略# 保留最近10个版本按创建时间排序只清理v1.x版本 ./clean_old_versions.py --image ^prod/app/* -l 10 -o date --include ^v1\\. --dry-run场景三跨项目批量清理多个项目使用相同命名规范时# 清理所有项目的feature分支镜像 ./clean_old_versions.py --image ^.*/.*-feature-.* -l 2安全操作指南1. 始终先进行干运行在执行实际删除前务必使用--dry-run参数预览操作./clean_old_versions.py --image ^critical-app/* -l 5 --dry-run这会显示将要删除的标签列表但不会执行实际删除操作。2. 停止Registry服务在运行清理脚本前必须停止Docker Registry服务以避免数据损坏# 停止Registry服务 docker stop registry # 运行清理脚本 ./clean_old_versions.py --image ^app/* -l 10 # 重新启动Registry服务 docker start registry # 运行垃圾回收 docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml3. 备份重要数据对于关键生产环境建议先备份# 备份Registry数据目录 tar -czf registry-backup-$(date %Y%m%d).tar.gz $REGISTRY_DATA_DIR高级配置选项自定义脚本路径如果delete_docker_registry_image.py安装在其他位置./clean_old_versions.py --image ^app/* -s /custom/path/delete_docker_registry_image详细输出模式需要查看详细执行过程时./clean_old_versions.py --image ^app/* -v --dry-run故障排除与常见问题问题1权限不足确保脚本有权限访问Registry数据目录sudo chmod x clean_old_versions.py sudo ./clean_old_versions.py --image ^app/*问题2网络连接失败检查Registry URL和网络连通性curl http://localhost:5000/v2/_catalog问题3正则表达式不匹配使用更宽松的正则表达式进行测试# 先使用简单的模式测试 ./clean_old_versions.py --image app --dry-run自动化集成方案与CI/CD流水线集成在Jenkins、GitLab CI等工具中集成清理任务# GitLab CI示例 clean_registry: stage: cleanup script: - pip install requests - ./clean_old_versions.py --image ^${CI_PROJECT_PATH}/* -l 10 --dry-run - ./clean_old_versions.py --image ^${CI_PROJECT_PATH}/* -l 10 only: - schedules定时任务配置使用cron定时执行清理# 每周日凌晨3点清理 0 3 * * 0 /usr/local/bin/clean_old_versions.py --image ^.*/* -l 20 --registry-url http://registry:5000 /var/log/docker-cleanup.log 21性能优化建议1. 分批处理大型仓库对于包含大量镜像的仓库建议分批处理# 按项目分批清理 for project in frontend backend database; do ./clean_old_versions.py --image ^${project}/* -l 15 done2. 避免高峰期操作选择系统负载较低的时段执行清理# 凌晨执行 0 2 * * * /path/to/clean_old_versions.py --image ^.*/* -l 103. 监控清理效果记录清理操作的统计信息./clean_old_versions.py --image ^app/* -l 5 21 | tee -a /var/log/registry-cleanup-$(date %Y%m%d).log总结clean_old_versions.py是管理Docker私有仓库存储空间的强大工具。通过灵活的筛选条件和智能的版本保留策略您可以自动化清理流程减少手动操作提高效率精确控制保留策略按时间、版本号、正则表达式多维度筛选保障数据安全干运行模式和备份机制确保操作安全无缝集成现有系统支持CI/CD流水线和定时任务开始使用clean_old_versions.py让您的Docker Registry始终保持整洁高效提示在实际生产环境使用前请务必在测试环境中充分验证清理策略确保不会误删重要镜像版本。【免费下载链接】delete-docker-registry-imageIf you are running a private v2 docker registry, and you are storing your data on disk, running this script from the machine where the data lives will let you fully delete an image or tag项目地址: https://gitcode.com/gh_mirrors/de/delete-docker-registry-image创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考