清理的推荐顺序
需要回收磁盘时,按影响面从小到大清理:先已停止的容器,再悬空与未使用的镜像,然后是构建缓存,最后才轮到卷。每一步都能用过滤器把范围限定在时间或标签上。卷是这批对象里唯一无法恢复的一类,必须放在最后单独确认后再执行。
基本信息
| 建议顺序 | container → image → builder → volume |
|---|---|
| 过滤器 | until= 按时间、label= 按标签限定范围 |
| 常用命令 | docker container / image / builder / volume prune |
| 高危项 | volume prune,删除后数据不可恢复 |
| 配套查看 | docker system df 观察各类占用 |
典型使用场景
- 宿主磁盘告警时的分级清理
- CI 构建机定期回收,保留最近若干小时的构建缓存
- 上线前腾出空间,避免新镜像解压失败
- 只清理早于某个时间点的镜像,保护近期回滚版本
- 清理前先看占用概览,确定是否需要动卷
分级清理流程
分级清理流程
docker system df # 先看各类资源占用概览
docker container prune -f # 1. 已停止容器
docker image prune -f --filter until=168h # 2. 悬空镜像,限定 7 天前
docker builder prune -f # 3. 构建缓存
docker volume prune -f # 4. 未使用卷,数据不可恢复,单独确认
docker system df # 回收后再核对一次各步骤影响面
| 步骤 | 命令 | 影响面 |
|---|---|---|
| 已停止容器 | container prune | 容器可重建,影响最小 |
| 悬空镜像 | image prune | 不影响运行中的容器 |
| 未使用镜像 | image prune -a | 可能删掉待回滚版本,需加时间过滤 |
| 构建缓存 | builder prune | 下次构建变慢 |
| 未使用卷 | volume prune | 数据不可恢复,必须最后做 |
定期清理建议做成计划任务,并保留一段时间的构建缓存,在磁盘占用与构建速度之间取平衡。
image prune -a 会清掉所有未被容器使用的镜像,包含准备回滚的版本,配合 until 或 label 过滤更稳妥。
动手前先确认四件事
- 确认要保护的资源:准备回滚的镜像、仍在使用的卷、需要保留的构建缓存
- 确认回收范围:用时间或标签过滤,把动作限定在明确安全的对象上
- 确认回收顺序:可重建的放前面,不可恢复的放在最后并单独确认
- 确认回收效果:每步之后查看占用概览,避免一次清理过猛