docker system prune 命令主要用于清理 docker 中未被使用的资源,包括所有停止状态的容器、无名镜像、未被使用的网络和构建缓存,默认不会影响正在运行的容器、数据卷或已有标签的镜像;1. 默认清理内容:停止的容器、dangling 镜像、未用网络、构建缓存;2. 加 –all 或 -a 可清理所有未被引用的镜像;3. 清理时可加 -f 强制执行;4. 配合 docker volume prune、docker image prune -a、docker rm -f 等命令可更彻底释放空间;5. 定期使用 docker system df 查看磁盘占用情况,有助于及时清理。
Docker用久了,系统盘空间很容易被撑爆。特别是开发测试环境,镜像、容器、卷这些内容积累起来非常快。system prune 是一个快速清理 Docker 占用空间的命令,但它的作用范围和使用方式你得搞清楚,不然容易误删。
一、docker system prune 能清理什么?
简单来说,docker system prune 的作用是清理“未被使用的”资源。默认情况下,它会清理以下内容:
- 所有停止状态的容器
- 构建过程中产生的无名(dangling)镜像
- 没有被任何容器使用的网络
- 构建缓存
执行命令很简单:
docker system prune
运行后会让你确认是否继续,输入 y 就开始清理。
注意:这个操作不会影响正在运行的容器、已有数据卷或已打标签的镜像。
如果你不希望每次都要确认,可以加上 -f 参数强制执行:
docker system prune -f
二、想清得更彻底?加个 –all
上面说的只是默认清理范围。如果你想连那些没有在用的镜像也一起删掉,可以用 –all 或简写 -a 参数:
docker system prune -a
这时候所有没被容器引用的镜像都会被清除,包括你很久以前拉下来的那些“备用”镜像。这个操作更狠,也更容易误删,建议提前确认哪些镜像是可以舍弃的。
三、清理磁盘不只是靠 system prune
虽然 system prune 很方便,但它并不能解决所有磁盘占用问题。比如:
- 数据卷(volumes):不会被自动清理,即使容器已经删了,卷还在。
- 日志文件:Docker 容器的日志可能会非常大,尤其是长时间运行的服务。
- 旧版本镜像残留:有时候同一个镜像 tag 被覆盖了,旧层可能还留着。
所以你可以结合几个其他命令一起使用:
查看磁盘使用情况:
docker system df
这个命令能让你看清当前 Docker 各类资源占用了多少空间。
清理无主卷:
docker volume prune
清理所有未使用镜像:
docker image prune -a
删除所有容器(慎用):
docker rm -f $(docker ps -aq)
这些命令配合使用,才能真正把空间腾出来。
基本上就这些。平时记得定期清理,尤其是一些临时构建的环境,别等到磁盘满了才想起这事。