如何清理Docker卷?

5 阅读2分钟

清理 Docker 卷(Volume)的核心原则是:只删未被容器使用的卷,避免误删数据。下面是最安全、最常用的清理方法。


清理 Docker 无用网络 超简单教程(Ubuntu 虚拟机专用):(juejin.cn/post/762332…)

一、先查看所有卷(确认哪些可删)

# 列出所有卷
docker volume ls

# 只看“未被使用”的卷(孤儿卷)
docker volume ls -f dangling=true

二、一键清理所有未使用的卷(最推荐)

这条命令只删除没有被任何容器引用的卷,正在运行/已停止但仍关联卷的容器不会受影响。

docker volume prune

执行后输入 y 确认。

强制清理(跳过确认)

docker volume prune -f

三、按条件清理(保留重要卷)

--filter 过滤,只删符合条件的卷,避免误删重要数据。

# 只删除没有 "keep" 标签的卷(给重要卷打标签可保护)
docker volume prune --filter "label!=keep"

# 删除 7 天前创建的未使用卷
docker volume prune --filter "until=168h"

四、删除指定卷(精准清理)

# 删除单个卷
docker volume rm 卷名/卷ID

# 批量删除多个卷
docker volume rm 卷1 卷2 卷3

五、系统级一键清理(容器+镜像+网络+卷)

如果想一次性清理所有 Docker 垃圾(含卷),必须加 --volumes 参数:

docker system prune -a --volumes

⚠️ 注意:会删除所有停止容器、无用镜像、无用网络、所有未使用卷,谨慎使用。


六、彻底清空所有卷(风险极高)

⚠️ 此操作会删除所有卷,包括正在使用的,数据不可恢复!

docker volume rm $(docker volume ls -q)

七、删除容器时顺便删卷(避免残留)

以后删除容器时,加 -v 可同时删除其关联的匿名卷,从源头减少垃圾:

# 删除容器并删除其匿名卷
docker rm -v 容器名/ID