Docker prune命令可高效清理闲置资源:image prune默认删悬空镜像,加-a删所有未被容器引用的镜像;network prune仅清理无容器连接的自定义网络;builder prune清理构建缓存;volume和container prune需单独执行。

Docker 的 prune 命令是清理闲置资源最直接高效的方式,无需手动筛选,一条命令即可批量删除未被容器引用的镜像、网络、卷和构建缓存。关键在于理解不同 prune 子命令的作用范围和安全边界,避免误删正在使用的资源。
清理未被任何容器引用的镜像
docker image prune 默认只删除“悬空镜像”(dangling images),即没有标签且不被任何容器或镜像依赖的中间层镜像。这类镜像通常来自重复构建或未打标签的 build 操作,占空间但无实际用途。
若想进一步清理所有未被容器使用的镜像(包括带标签但未运行的),需加 -a 参数:
-
docker image prune -a:删除所有未被任意容器引用的镜像(含带标签的) - 执行前会提示确认,加
-f可跳过确认(如docker image prune -af) - 注意:正在运行或已创建但未启动的容器所依赖的镜像不会被删
清理未被任何容器使用的自定义网络
Docker 默认网络(如 bridge、host、none)不会被 prune 删除。只有用户显式创建的自定义网络(docker network create mynet),且当前没有任何容器连接时,才会被清理。
-
docker network prune:仅清理无容器连接的用户自定义网络 - 同样支持
-f跳过确认 - 常见于测试后遗留的孤立网络,例如用
docker-compose启动又直接down但未加--volumes时可能残留
一键清理多种资源(镜像 + 网络 + 构建缓存)
虽然 Docker 没有单条命令同时 prune 镜像和网络,但可通过组合命令实现“一键”效果(Shell 中可写成一行):
docker image prune -af && docker network prune -f && docker builder prune -f-
docker builder prune -f清理构建器缓存(BuildKit 启用时尤其有用,节省大量磁盘) - 建议先分别运行各 prune 命令观察输出,确认无误后再加
-f自动化 - 生产环境慎用
-a和-f组合,可先用--dry-run(部分版本支持)预览,或不加-f手动确认
补充:清理卷与容器需单独处理
docker volume prune 和 docker container prune 不在“镜像+网络”范围内,但常被一并需要:
-
docker volume prune删除未被任何容器挂载的卷(⚠️ 数据会丢失,务必确认) -
docker container prune删除所有已停止的容器(不影响运行中容器) - 它们各自独立,不可与其他 prune 类型混用;Docker 不提供跨资源类型统一 prune 接口


















