docker overlay2引发磁盘爆满

发布时间 2023-12-14 16:02:30作者: 少年老余

前因: 最近服务器磁盘占比超过90%,log已经清理, 发现/data/docker/overlay2目录占用70%了

 

1.尝试清理docker未用镜像:

docker image prune

删除所有未使用的 Docker 资源,包括容器、镜像、卷和网络等(慎用, 小心删除有用容器)

docker ps -a | grep Exit

docker system prune

 

2.查找大文件

进入/data/docker/overlay2目录,查找目录大于5G

cd /data/docker/overlay2
du -h --max-depth=1 --threshold=5G
或者du -sh ./* | sort -rn | more 目录大小排序

 3.进入对应目录,发现很多core.*文件且很大

cd 034bc446e343c6127cb0053bc7266242b40b7028f9dc62713c7ede2ec5fa86cd
du -sh *
cd  merged

 解释: 

1.Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试

2.diff 文件夹: diff 文件夹是一个只读的文件系统层,它包含了Docker镜像的变更内容。当您对容器进行修改或添加新文件时,这些变更会被记录在 diff 文件夹中。每个Docker镜像都有一个对应的 diff 文件夹,用于存储与基础镜像的差异。

3.merged 文件夹: merged 文件夹是一个可读写的文件系统层,它是由基础镜像和 diff 文件夹合并而成的。当您启动一个Docker容器时, merged 文件夹中的内容将作为容器的文件系统。这个文件夹是容器运行时的可写层,您可以在容器中对文件进行修改或添加新文件,这些修改将存储在 merged 文件夹中。

4.删除所有core文件, 此问题解决

 

补充:

1.查看overlay2 里目录名字找到对应docker容器

docker inspect dac5ce65c8bd --format '{{.State.Pid}},{{.Id}},{{.GraphDriver.Data.WorkDir}}'   | grep 034bc446e343c6127cb0053bc7266242b40b7028f9dc62713c7ede2ec5fa86cd