docker volume prune 可安全清理所有未被容器引用的悬空卷,仅删除 dangling volumes;执行前用 docker volume ls -f dangling=true 预览,结合 inspect 和业务判断是否闲置,确认后可选交互式或 -f 强制清理。

直接用 docker volume prune 就能安全清理所有未被容器引用的卷,它只删“悬空卷”(dangling volumes),不会碰正在使用的数据。
先确认哪些卷真没在用
运行这行命令预览待删列表,避免误操作:
-
docker volume ls -f dangling=true—— 显示所有未被任何容器(含已退出)引用的卷 - 如果看到像
postgres_data或app_logs这类名字,别急着删,先用docker volume inspect 卷名看挂载点和创建时间,再结合业务判断是否真闲置 - 想查得更全些,可加时间排序:
docker volume ls --format "{{.Name}}\t{{.CreatedAt}}" | sort -k2
执行清理的两种方式
确认无误后,选一种执行:
-
docker volume prune—— 交互式,会停顿问你“y/N”,适合手动操作 -
docker volume prune -f—— 加-f跳过确认,适合脚本或批量运维
想连镜像、容器、网络一起清?用 system prune
如果磁盘压力大,且环境允许重置,可用这个更彻底的命令:
-
docker system prune -a --volumes -f—— 删除所有未用镜像、停止容器、闲置网络,以及所有未挂载的卷 - 注意:
-a会删掉所有未被容器使用的镜像(不只是悬空镜像),--volumes是关键开关,不加它默认不碰卷 - 生产环境慎用,建议先在测试机跑一遍
手动删单个卷的注意事项
若只想删某一个特定卷,用 docker volume rm,但必须满足前提:
- 先查有没有容器还在用它:
docker ps -a --filter volume=卷名,结果为空才安全 - 即使容器已停止,只要
docker inspect输出里Mounts字段含该卷名,就仍算“被使用”,删会失败 - 成功删除后,宿主机对应路径
/var/lib/docker/volumes/卷名/_data会被自动清空











