首页/云/Docker 容器速查/docker volume rm / prune 清理卷
网络与存储52 条

docker volume rm / prune 清理卷

删除不再需要的卷:被容器占用时删除会被拒绝;prune 批量清理未使用卷,默认只清匿名卷,-a 扩展到具名卷(Docker 23+)。

Docker 容器速查云更新于 2026-10-13

命令是干什么的

docker volume rm 删除指定卷,docker volume prune 批量清理没有被任何容器使用的卷。卷被容器引用时(包括已停止的容器)删除会被拒绝,需要先处理容器。prune 默认只清理匿名卷,加 -a 才把具名卷纳入范围。删除卷意味着卷内数据一起消失且无法恢复,执行前必须确认没有需要保留的数据。

基本信息

用途删除指定卷与批量清理未使用卷
语法docker volume rm 卷名 / docker volume prune [-a]
占用检查docker ps -a --filter volume=卷名
过滤清理docker volume prune -a --filter 'label!=keep'
数据影响删除即不可恢复

典型使用场景

  • 清理测试数据卷,回收宿主磁盘空间
  • 删除旧版本服务遗留的具名卷(数据已迁移完成)
  • CI 环境每个流水线结束后清理匿名卷,避免宿主上越堆越多
  • 用 label 过滤保留已备份的卷,批量清掉其余未使用卷
  • 排查卷占用时先列出引用它的容器

清理与核对

清理与核对
docker volume ls                                     # 列出全部卷
docker ps -a --filter volume=olddata                 # 查还有谁在引用它
docker volume rm olddata                             # 删除指定卷(被引用会报错)
docker volume prune -f                               # 清理未使用的匿名卷
docker volume prune -a -f --filter 'label!=keep'     # 连具名卷一起清,保留带 keep 标签的
docker system df -v | head -20                       # 查看卷占用概览

命令作用范围

命令作用范围风险
docker volume rm指定的卷被容器引用时报错,需先停用容器
docker volume prune未使用的匿名卷默认不动具名卷,风险较低
docker volume prune -a未使用的全部卷可能删掉尚未挂载但有数据的卷
--filter label!=keep按标签筛除标签需在创建卷时写入才有效
卷是容器里为数不多的持久化位置之一,删除不可逆;重要数据应独立备份,或在清理前先做一次卷到宿主目录的复制核对。
想让某个卷在批量清理中被保留,创建时给它打上标签并在 prune 里用 filter 排除,比每次人工核对清单更省心。

易错点

  • prune -a 会删掉未挂载到容器但仍然存有数据的具名卷,执行前先用 volume ls 列出待删清单核对
  • 卷被容器引用时删除会被拒绝,需先停止并删除容器或断开挂载关系;删容器前要确认卷内数据能否重建
  • 把卷当成可随时重建的资源:数据库、上传目录这类卷删掉后无法恢复,备份流程必须独立于清理流程
  • 对正在被写入的卷执行删除:进程持有文件句柄,可能造成写入错乱,应先停容器再动卷

数据来源与参考

  • Docker 官方 CLI 参考:docker volume rm / prune(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌