Docker临时数据清理需区分安全与谨慎类型:删已停容器及其可写层用docker container prune -f;清悬空镜像用docker image prune;日志用truncate清空或配置max-size轮转;未用卷和网络分别用docker volume prune -f、docker network prune -f。
清理 docker 容器产生的临时数据,核心是区分“可安全删除”和“需谨慎处理”的资源类型。临时数据主要来自停止容器的可写层、构建缓存、日志文件和未挂载卷,它们不参与运行但持续占用 /var/lib/docker/overlay2 和 /var/lib/docker/containers 空间。
清理已停止容器及其可写层
已退出(exited)的容器仍保留完整的读写层,这是磁盘空间增长的主因之一。
- 列出所有已停止容器:
docker ps -a --filter "status=exited" - 批量删除(不删运行中容器):
docker container prune -f - 若需连同关联的匿名卷一并清理,加
--volumes参数:docker container prune -f --volumes
清除构建缓存与悬空镜像
Docker 构建过程生成大量中间层缓存,且旧镜像常被新版本取代,形成冗余。
- 仅清理悬空镜像(无标签、未被引用):
docker image prune - 清理所有未被任何容器使用的镜像:
docker image prune -a - 同时清构建缓存和网络:
docker system prune(默认不含镜像和卷)
限制并清理容器日志文件
默认 json-file 日志会无限追加,单个 *-json.log 文件可达数十 GB。
- 查看最大日志文件:
find /var/lib/docker/containers/ -name "*-json.log" -exec du -h {} \; | sort -hr | head -5 - 安全清空(不删文件,只清内容):
truncate -s 0 /var/lib/docker/containers/*/*-json.log - 长期方案:修改
/etc/docker/daemon.json,启用日志轮转:
{"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"}}
修改后执行sudo systemctl daemon-reload && sudo systemctl restart docker
按需清理未使用卷和网络
匿名卷不会随容器删除而自动释放,容易成为“隐形空间杀手”。
- 查看未使用卷:
docker volume ls -f dangling=true - 删除全部未挂载卷:
docker volume prune -f - 清理未使用自定义网络:
docker network prune -f - 注意:
docker system prune -a --volumes会同时清理镜像+卷,操作前请确认无重要数据


















