命令是干什么的
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 排除,比每次人工核对清单更省心。