Docker本地卷每日增长占磁盘 如何判定可删性及限制空间占用
判定目标卷是否可安全删除的操作步骤
- 第一步先确认卷的引用关系,执行以下命令列出所有关联过该卷的容器(包含运行中、已停止状态):
docker ps -a --filter volume=4301ac15fed0bec1cd93aa181ab18c5227577c2532fff0a5f4e23956da1cfe4f
如果命令返回空结果,说明当前没有任何容器引用该卷,属于无主卷。你之前执行docker system prune --volumes未回收该空间,基本是因为执行命令时该卷还被已停止的容器占用——prune操作只会删除完全无容器引用的卷。 - 第二步核验卷内数据,执行命令查看卷内存储的文件类型与占用分布:
sudo du -sh /var/lib/docker/volumes/4301ac15fed0bec1cd93aa181ab18c5227577c2532fff0a5f4e23956da1cfe4f/_data/*
如果内容是业务需要的持久化数据(比如数据库存储文件、用户上传的正式资源),先完成数据备份再操作;如果是临时缓存、过期日志、无效碎片文件,且第一步确认无容器引用,可直接执行docker volume rm 4301ac15fed0bec1cd93aa181ab18c5227577c2532fff0a5f4e23956da1cfe4f安全删除。
注:该卷日增1GB的增长速率,基本是关联服务持续写入未轮转的日志、临时运行数据导致的,找到关联容器后优先给对应服务配置日志轮转即可解决持续增长问题。
限制Docker磁盘过度消耗的落地方法
- 配置全局容器日志轮转规则,避免日志无限占盘。编辑Docker daemon配置文件
/etc/docker/daemon.json,添加以下配置:
{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }
保存后执行sudo systemctl restart docker生效,该规则仅对新创建的容器生效,存量容器需要重建后才会应用配置。
- 配置定期清理策略。可通过crontab添加定时任务,每周执行一次清理命令,自动回收超过7天未使用的无效资源:
docker system prune -af --volumes --filter "until=168h"
该命令不会删除正在运行的容器、正在被引用的镜像和卷,不会影响正常业务。 - 规范卷使用规则。启动容器时避免自动生成匿名卷,需要持久化的场景统一使用命名卷或绑定挂载,方便后续溯源管理;不需要持久化的临时写入目录直接挂载
tmpfs,数据写入内存不占用长期磁盘空间。 - 配置磁盘配额。如果宿主机使用xfs/ext4文件系统,可给Docker数据目录所在分区配置磁盘配额,设置Docker可使用的最大磁盘阈值,避免Docker相关文件占满整个宿主机磁盘。
内容的提问来源于stack exchange,提问作者Jyme
相关产品推荐
相关产品推荐

