docker rm 仅删除已停止容器,强制删除运行中容器需加 -f;docker system prune 安全清理悬空镜像、闲置网络等无主资源,加 --volumes 会删除未挂载卷,须谨慎。

删除容器时,docker rm 只负责移除已停止的容器;若想批量清理无用资源(如悬空镜像、未被引用的构建缓存、闲置网络和卷),必须配合 docker system prune 系列指令。二者分工明确,混用不当反而可能误删关键数据。
docker rm:精准删除单个或多个已停止容器
docker rm 不接受运行中容器,强行加 -f 会先强制终止再删除,等效于 docker stop && docker rm。常用方式包括:
- 删除指定容器:
docker rm web-server db-backup - 删除最近创建的一个已退出容器:
docker rm $(docker ps -lq) - 批量删除所有已停止容器:
docker rm $(docker ps -aq --filter "status=exited")
注意:docker ps -aq 列出全部容器 ID,不加过滤直接传给 rm 会导致运行中容器被强制终止,慎用。
docker system prune:安全清理“无主”资源
docker system prune 默认只清理四类闲置资源:已停止容器、悬空镜像(dangling images)、未被任何容器使用的网络、以及未被挂载的构建缓存。它不会动正在运行的容器、有标签的镜像、用户显式创建的卷或自定义网络。
- 基础清理(交互确认):
docker system prune - 跳过确认,直接执行:
docker system prune -f - 同时清理已停止容器的日志和卷(需额外加
--volumes):docker system prune -f --volumes
⚠️ 注意:--volumes 参数会删除所有未被容器引用的卷,包括你手动创建但当前未使用的卷,请提前备份重要数据。
按需组合:先 rm 再 prune 的典型流程
日常开发中,推荐分步操作以控制粒度:
- 停掉并删除测试容器:
docker stop my-test-app && docker rm my-test-app - 清理构建残留(比如多次
docker build后产生的悬空镜像):docker image prune -f - 定期执行系统级整理:
docker system prune -f
如果使用 CI/CD 流水线频繁构建镜像,可加入 docker builder prune -f 清理 BuildKit 缓存,节省磁盘空间。
验证清理效果:别删完就走
执行清理后建议快速核对关键指标:
- 查看剩余容器:
docker ps -a - 检查镜像占用:
docker image ls或docker system df(显示镜像、容器、卷、缓存的磁盘使用详情) - 确认卷是否还在:
docker volume ls(尤其用了--volumes后)
其中 docker system df -v 能展开显示每个镜像被哪些容器引用,帮助判断某镜像能否安全清理。










