首页
/ Docker-GC 项目详解:自动化清理Docker容器与镜像的实用指南

Docker-GC 项目详解:自动化清理Docker容器与镜像的实用指南

2025-07-08 03:51:04作者:邵娇湘

项目概述

Docker-GC 是一个用于自动化清理Docker容器和镜像的Shell脚本工具。它通过智能识别并删除不再使用的Docker资源,帮助用户有效管理磁盘空间,避免因长期积累的废弃容器和镜像导致的存储问题。

核心功能

  1. 容器清理:自动删除已停止运行超过指定时间(默认1小时)的容器
  2. 镜像清理:自动删除未被任何容器使用且创建时间超过阈值的镜像
  3. 卷清理:可选功能,可清理未被任何容器使用的数据卷
  4. 排除机制:支持配置白名单,保护特定容器和镜像不被清理

工作原理

容器清理流程

  1. 获取所有容器列表
  2. 识别正在运行的容器
  3. 排除配置文件中指定的容器
  4. 检查已停止容器的停止时间
  5. 删除超过宽限期(GRACE_PERIOD_SECONDS)的容器

镜像清理流程

  1. 获取所有镜像列表
  2. 识别正在被使用的镜像
  3. 排除配置文件中指定的镜像
  4. 检查镜像的创建时间
  5. 删除未被使用且超过宽限期的镜像

关键配置参数

参数名 默认值 说明
GRACE_PERIOD_SECONDS 3600 宽限期(秒),超过此时长的资源将被清理
STATE_DIR /var/lib/docker-gc 状态文件存储目录
EXCLUDE_FROM_GC /etc/docker-gc-exclude 镜像排除列表文件
EXCLUDE_CONTAINERS_FROM_GC /etc/docker-gc-exclude-containers 容器排除列表文件
REMOVE_VOLUMES 0 是否清理未使用的数据卷
DRY_RUN 0 试运行模式,只显示将被清理的资源而不实际执行

使用场景

生产环境维护

在长期运行的Docker环境中,定期执行docker-gc可以:

  • 防止因日志、临时文件等导致的磁盘空间耗尽
  • 保持系统整洁,提高管理效率
  • 避免旧版本镜像占用过多存储空间

CI/CD流水线

在持续集成/持续部署环境中:

  • 每次构建后自动清理测试容器
  • 保留必要的基础镜像,删除中间构建层
  • 控制构建节点的存储使用量

高级功能

  1. 最小保留镜像数:通过MINIMUM_IMAGES_TO_SAVE参数,可确保每个镜像至少保留指定数量的版本
  2. 强制删除:FORCE_CONTAINER_REMOVAL和FORCE_IMAGE_REMOVAL参数可强制删除资源
  3. 日志记录:支持输出到系统日志或标准输出
  4. 排他性执行:通过PID文件确保同一时间只有一个实例运行

最佳实践

  1. 配置排除列表:将关键容器和基础镜像加入排除列表,避免误删
  2. 调整宽限期:根据实际需求调整GRACE_PERIOD_SECONDS,平衡存储使用和安全性
  3. 定期执行:通过cron设置定期任务,如每天凌晨执行清理
  4. 监控日志:定期检查清理日志,确认符合预期

注意事项

  1. 清理操作不可逆,建议先在DRY_RUN模式下测试
  2. 对于生产环境,应谨慎设置宽限期和排除列表
  3. 数据卷清理需特别小心,确保不删除重要数据
  4. 不同Docker版本可能存在兼容性问题,建议测试后再部署

Docker-GC作为一个轻量级的维护工具,能够有效解决Docker环境中的资源积累问题,合理配置和使用可以显著提升Docker环境的稳定性和管理效率。