Docker清理数据卷(volume prune)
Docker volume prune 是 Docker 提供的一个清理命令,用于删除不再使用的数据卷,帮助释放磁盘空间。
命令介绍
docker volume prune
会删除所有未被任何容器使用的匿名数据卷。这些"悬空"的数据卷通常是在容器删除后遗留下来的,占用磁盘空间但不再有用。
基本语法
docker volume prune [OPTIONS]
常用选项
-f, --force
: 强制删除,不提示确认--filter
: 根据条件过滤要删除的数据卷
使用示例
1. 基本使用
# 删除所有未使用的数据卷(会提示确认)
docker volume prune
# 强制删除,不提示确认
docker volume prune -f
2. 使用过滤器
# 删除指定时间之前创建的未使用数据卷
docker volume prune --filter "until=24h"
# 保留最近10天的缓存
docker builder prune --filter 'until=240h'
# 删除带有特定标签的未使用数据卷
docker volume prune --filter "label=environment=test"
3. 结合其他清理命令
# 清理整个 Docker 环境
docker system prune -a --volumes
# 只清理数据卷
docker volume prune -f
常见使用场景
1. 定期维护
在开发环境中定期清理不再使用的数据卷,防止磁盘空间被浪费:
# 每周执行一次清理
docker volume prune -f
2. CI/CD 流水线
在持续集成环境中,测试完成后清理临时数据卷:
# 测试完成后清理
docker-compose down --volumes
docker volume prune -f
3. 开发环境重置
重新开始项目开发时,清理所有相关数据:
# 停止所有容器并清理数据卷
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker volume prune -f
4. 磁盘空间不足时
当服务器磁盘空间告急时的紧急清理:
# 查看数据卷占用情况
docker system df
Images
所有镜像占用的空间,包括拉取下来的远程镜像和本地构建的镜像。镜像采用分层存储,共享相同基础层可减少实际空间占用12,7。
Containers
运行的容器占用的空间,表示每个容器的读写层(位于/var/lib/docker/overlay2/
)。容器停止后,读写层空间可回收12,7。
Local Volumes
容器挂载的本地数据卷空间(默认路径为/var/lib/docker/volumes/
),用于持久化数据,生命周期独立于容器1,12。
Build Cache
镜像构建过程中产生的缓存空间(需使用 BuildKit,Docker 18.09+)。缓存可加速后续构建,但需定期清理12,14。
# 清理未使用的数据卷
docker volume prune -f
# 如果需要更彻底的清理
docker system prune -a --volumes -f
注意事项
数据安全: 执行前确认要删除的数据卷不包含重要数据
生产环境: 在生产环境中谨慎使用,建议先查看哪些数据卷会被删除
备份: 对重要数据进行备份后再执行清理
命名数据卷: 有名称的数据卷不会被 prune 命令删除,只有匿名数据卷才会被清理
查看清理效果
清理前后可以通过以下命令查看效果:
# 查看所有数据卷
docker volume ls
# 查看 Docker 存储使用情况
docker system df
# 查看详细信息
docker system df -v
这个命令是 Docker 环境维护的重要工具,合理使用可以有效管理磁盘空间,保持 Docker 环境的整洁。
Last updated
Was this helpful?