docker overlay磁盘空间过高的处理方案
近期,在运维服务器时,时常会发现/var/lib/docker/overlay2下的磁盘空间不足,先记录一下排查思路与清理方案。
一、清理images
查看images和container占用信息。
docker system df
如果是images占用较高,可考虑使用以下命令清理镜像
docker system prune -f -a
docker system prune
: 这个基础命令会移除所有未使用的容器、网络、镜像(仅限悬空镜像)以及构建缓存。-f
或--force
: 强制执行清理操作,不会提示确认信息。-a
或--all
: 当与prune
命令一起使用时,它会移除所有未使用的镜像而不仅仅是悬空镜像。
docker system prune -f -a
将会强制地删除系统中所有未被任何容器引用的镜像,包括那些不是悬空的镜像,以及所有未使用的容器、网络等资源。
清理前,请确保此操作的安全性
二、清理container
如果发现磁盘主要存储在container内部,则可以排查日志文件,一般/var/lib/docker/overlay2是重灾区
cd /var/lib/docker/overlay2
查询该目录下占用磁盘最多的目录
du -h --max-depth=1 --threshold=5G //只显示大于5GB的文件和目录的磁盘使用情况
进入占有磁盘空间较多的目录
cd d94dd067840447e79a99986e6f140f95d0c78ef3d2b1e0ed43c3255fce77c376
进入merged目录
cd merged/
查询当前目录下占用磁盘文件最多的目录
du -h --max-depth=1
后续操作,就是不断执行du -h --max-depth=1 查看当前目录下占用磁盘空间最多的目录,直到找到占用磁盘空间最多的文件,然后看看这些文件是否具备删除条件,如果是非必要的log文件则清理即可