container prune 是什么
docker container prune 批量删除已停止的容器,是清理环境的常规手段。默认会交互确认,加 -f 免确认;配合 --filter until 只清理超过指定时长的容器,可以避免误删刚退出、还没分析过的实例。
基本信息
| 用途 | 批量清理已停止容器 |
|---|---|
| 语法 | docker container prune [--filter until=24h] [-f] |
| 不会动的 | 运行中的容器与具名卷 |
| 相关命令 | docker system prune 范围更大,会连未使用网络与镜像一起处理 |
| 非交互 | 脚本里必须显式加 -f,否则等待确认 |
典型使用场景
- 构建机、测试机定时清理,一天下来会积累大量退出状态的容器
- 磁盘告警时作为首选清理手段,比删镜像、删卷更安全
- 配合 until 只清超龄容器,保留近期退出、可能还要看日志的实例
- 排查结束后批量收尾,让环境恢复到可判断的状态
- 结合 label 过滤按团队或环境清理,只清测试环境的残留
- CI 流水线收尾阶段清掉本次运行产生的容器
示例
示例
docker container ls -a --filter status=exited | wc -l # 先看有多少待清理
docker container prune --filter until=24h # 只清理退出超过 24 小时的
docker container prune -f --filter 'label=env=ci' # 按标签清理并免确认
docker container prune -f # 清理全部已停止容器清理命令的范围差别
| 命令 | 清理对象 | 风险 |
|---|---|---|
| container prune | 已停止容器 | 现场与日志一起消失,难以恢复 |
| container prune --filter until | 超龄的已停止容器 | 相对温和,适合长期例行使用 |
| volume prune | 未被使用的卷 | 数据直接删除,执行前确认没有待保留数据 |
| system prune -a | 容器、网络、未使用镜像等 | 影响面最大,生产机上慎用 |
还没取完日志或现场(docker logs、docker cp、commit)的容器不要急着清理,退出状态的容器是排查问题的第一现场。
退出容器本身占用有限,真正吃盘的是可写层数据、镜像层和卷;动手前用 docker system df 看清空间去向,比盲目清理有效。
prune 只处理执行命令的这台机器:多节点环境要在每个节点分别执行,或用统一脚本分发,否则节点间的清理情况会不一致。