Docker overlay2 占满磁盘怎么办?先定位再清理
服务器磁盘突然告急,/var/lib/docker/overlay2占了几十 GB,最危险的做法是直接进入目录删文件。overlay2 保存的是容器可写层和镜像层,手工删除可能让正在运行的容器损坏。本文给出一套先确认来源、再安全回收、最后防止复发的流程。
先看空间被谁吃掉
df-hdockersystemdf-vsudodu-xh/var/lib/docker --max-depth=1|sort-hdocker system df -v会列出镜像、容器、volume 和构建缓存。先找到最大的类别,不要看到 overlay2 大就认定全是无用镜像。运行中容器写入的临时文件、应用缓存和误写到容器内部的数据,也会进入可写层。
配置和磁盘怎么选
只跑两三个轻量服务,40GB 系统盘通常够用;镜像多、构建频繁或带数据库,建议 80GB 起步。系统盘长期保持 20% 以上空闲,才有余量做升级、拉镜像和备份。
我会把多项目 Docker 主机放在雨云服务器 rainyun-com的 2 核 4G、80GB 左右磁盘配置上,避免每次升级都和空间赛跑。注册填优惠码2026off领 5折,预算有限时磁盘余量往往比多一颗核心更有用。
安全清理顺序
先删除已经确认不用的停止容器和旧镜像:
dockerps-adockerimagelsdockercontainer prunedockerimage prunedockerbuilder prune这些命令执行前都会显示影响范围。docker system prune -a清得更激进,不适合不看提示就运行。volume 里可能是真实业务数据,绝不要把docker volume prune当日常清理命令。
容器可写层异常变大
用下面命令看每个容器的可写层:
dockerps-s如果某个容器很大,通常是日志、下载文件或缓存写进了容器内部。正确修法是把持久数据挂载到明确目录,并配置应用清理策略,而不是反复 prune。
验证和防复发
清理后再次运行docker system df -v和df -h,确认空间真的释放。再检查 Compose 是否为数据目录配置了 volume、Docker 日志是否设置max-size和max-file。
建议给磁盘使用率设置 80% 告警。等到 100% 才处理,数据库和容器运行状态往往已经受影响。
总结
overlay2 大不等于可以直接删。先分清镜像、构建缓存、可写层和 volume,再使用 Docker 自带命令回收,最后修正数据挂载和日志策略。