docker本地磁盘清理重点在于悬空镜像、未引用镜像层、构建缓存和容器日志;推荐按需使用docker image prune(安全)、docker system prune(常规)或docker system prune -a --volumes(彻底,慎用),并配置日志轮转与构建缓存限制。

清理 Docker 镜像仓库相关的磁盘空间,重点不在远程 Registry(如 Docker Hub),而在于本地残留的“隐形仓库”——包括悬空镜像、未被引用的镜像层、构建缓存和容器日志。Docker 本身没有全自动的后台垃圾回收服务,但提供了一套分层、可控的手动回收机制,合理使用可安全释放数 GB 空间。
识别真正可删的“垃圾镜像”
Docker 中两类镜像可放心清理:
-
悬空镜像(dangling images):ID 存在,但仓库名和标签均为
<none></none>,常见于重复docker build -t xxx或docker pull后旧版本失去标签;查看命令:docker images -f dangling=true -
未被任何容器引用的镜像:有明确标签(如
nginx:alpine),但当前无容器在运行或依赖它;这类镜像不会自动释放,需主动处理
分步执行安全清理操作
从保守到激进,按需选择命令,避免误删共享基础层:
- 仅清理悬空镜像(最安全):
docker image prune(加-f跳过确认) - 清理所有未被容器使用的镜像(含带标签的):
docker image prune -a - 一键清理停止容器、未用网络、悬空镜像、构建缓存:
docker system prune - 全量清理(含未挂载卷):
docker system prune -a --volumes(生产环境慎用,务必确认卷中无数据)
用 --filter 精准控制清理范围
避免“一刀切”,尤其适合多项目共存环境:
- 只删 48 小时前的悬空镜像:
docker image prune -f --filter "until=48h" - 只删某应用的历史镜像:
docker image prune -a -f --filter "reference=myapp:*" - 组合筛选(如指定镜像 + 时间):
docker image prune -a -f --filter "reference=redis:alpine" --filter "until=72h"
别忽略构建缓存与容器日志
这两类常是长期运行系统磁盘耗尽的主因:
-
构建缓存:用
docker builder prune清理;加-a清全部;加--keep-storage 2g可设缓存上限 -
容器日志:默认 JSON 日志不轮转,单文件可达 GB 级。推荐在
/etc/docker/daemon.json中配置: {"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"}} 修改后执行sudo systemctl restart docker











