必须先停止所有运行中的容器,再删除容器和镜像;推荐使用docker system prune -a -f一键清理未用资源,加--volumes可删未用卷但需谨慎。

直接删容器前,得先看它停没停。运行中的容器不能直接删,得先停掉,否则会失败或报错。清理的关键是分清状态、按需操作,避免误删正在用的服务。
停止所有运行中的容器
这是后续删除的前提。运行中容器必须先停止,才能被安全移除:
- 停全部运行中容器:docker stop $(docker ps -q)
- 如果想连已退出(exited)的也一起停——其实没必要,stop 只对 running 生效,已退出的不受影响
批量删除容器的常用方式
根据实际残留情况选择对应命令,不建议无差别全删:
- 删所有已停止的容器(最安全,日常推荐):docker container prune -f
- 删所有已退出(exited)状态的容器:docker rm $(docker ps -aq --filter status=exited)
- 删所有创建但从未启动(created)的容器:docker rm $(docker ps -aq --filter status=created)
- 按名称模糊匹配删(比如清理测试用的 nginx 容器):docker rm -f $(docker ps -aq --filter name=nginx)
镜像清理要分清“悬空”和“未使用”
镜像不像容器有运行状态,但存在引用关系。被容器引用的镜像删不掉,所以务必先清完容器再处理镜像:
- 删所有悬空镜像(dangling=true,即没标签、没被引用的中间层):docker image prune -f
- 删所有未被任何容器使用的镜像(较彻底,但保留正在用的):docker image prune -a -f
- 强制删全部镜像(危险!确保没有容器在用):docker rmi -f $(docker images -q)
一键清理整个 Docker 环境
适合重置开发环境或磁盘告警时快速释放空间,但会清掉所有未用资源:
- 基础清理(停用容器、悬空镜像、未用网络、构建缓存):docker system prune -f
- 加 -a 参数可删所有未用镜像(含带标签的):docker system prune -a -f
- 再加 --volumes 会删所有未用数据卷(慎用!数据会丢):docker system prune -a -f --volumes











