清理 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