Docker删除所有停止的容器,一键清理
时间:2026-10-8 08:21 作者:emer 分类: 无
前言
用Docker久了,一堆停止的容器占磁盘,一个个删太麻烦。本文讲怎么一键清理。
一、查看所有停止的容器
先看看有多少个停止的容器:
docker ps -a
看STATUS列,显示Exited的就是停止的。
只看停止的:
docker ps -a -f status=exited
二、删除所有停止的容器
一键清理
docker container prune
输出:
Total reclaimed space: 1.2GB
直接删掉所有停止的容器。
确认提示
默认会问你:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N]
输入y确认。
跳过确认
docker container prune -f
加个 -f 直接删,不问。
三、其他清理命令
删除所有没用的镜像
docker image prune
只删悬空镜像(dangling images),就是没有标签的。
删所有没用的镜像(包括没在用的)
docker image prune -a
清理所有没用的东西
docker system prune
包括:
- 停止的容器
- 没用的网络
- 悬空镜像
- 构建缓存
清理所有没用的东西(包括镜像)
docker system prune -a
连没在用的镜像也删了。
清理数据卷
docker volume prune
注意: 这个会删没用的数据卷,里面的数据也没了!
四、手动删除单个容器
如果只想删某一个:
docker rm 容器ID或名字
强制删除运行中的容器:
docker rm -f 容器ID或名字
五、批量删除停止的容器
方法1:用docker rm
docker rm $(docker ps -a -q -f status=exited)
解释:
docker ps -a -q列出所有容器ID-f status=exited只筛停止的docker rm删掉
方法2:用docker container prune
docker container prune -f
推荐用这个,简单。
六、查看磁盘占用
清理之前看看占了多少:
docker system df
输出:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 20 5 10GB 7GB (70%)
Containers 15 5 500MB 400MB (80%)
Local Volumes 8 3 2GB 1GB (50%)
Build Cache - - 1GB 800MB
看RECLAIMABLE列,就是可以回收的。
七、常见场景
场景1:测试完一堆容器,想全清了
docker container prune -f
场景2:磁盘满了,全面清理
docker system prune -a -f --volumes
-a删所有没用的镜像-f不问--volumes连数据卷也删
注意: 这个很猛,数据卷也删了,重要数据先备份!
场景3:只清理镜像,不动容器
docker image prune -a -f
八、常见坑
坑1:删了数据卷,数据没了
docker system prune --volumes
加了 --volumes 会删没用的数据卷。
注意: 数据库的数据卷别删!
坑2:删了镜像,重新拉要很久
docker image prune -a
把所有没在用的镜像都删了,下次用还要重新拉。
建议: 常用镜像留着,别全删。
坑3:误删了运行中的容器?
docker container prune 只删停止的,运行中的删不了。
放心,安全。
坑4:删了容器,数据卷还在
docker rm 容器名
只删容器,数据卷还在。
想连数据卷一起删:
docker rm -v 容器名
九、定期清理脚本
写个脚本,定期清理:
#!/bin/bash
# 清理停止的容器
docker container prune -f
# 清理悬空镜像
docker image prune -f
# 清理没用的网络
docker network prune -f
加到crontab,每周跑一次:
0 3 * * 0 /home/clean-docker.sh
总结
记住:
docker container prune删所有停止的容器docker image prune -a删所有没用的镜像docker system prune全面清理- 删数据卷要小心,别把数据库删了
最常用:
docker container prune -f
遇到问题加QQ23979811 协助处理