【docker发现/var/lib/docker/overlay2/目录下有一个占用磁盘空间很大的目录怎么处理】

 

 

 

 

 

[标签]: docker   linux   overlay2   overlay2目录占用磁盘   overlay2是什么   /var/lib/docker/overlay2/目录

 

 

问题详情的描述或方案目标的预期:

今天收到k8s集群的node节点磁盘告警,经过排查确定是dockers工作目录下的某个容器子目录接近50G,

/var/lib/docker/overlay2/9e07ed2704ba4c60d3694b2d12f57da8a4b5055281d250e48a8282f76362c40f,具体是里面的diff和merged差不多各25G,

这是啥?该怎么处理呢?

 

 

 

【解决方案】

 

[知识一] : /var/lib/docker/overlay2 -- 容器的层文件的实际存储目录

该目录下的merged是容器原始数据,diff是容器创建后生成的数据产生的数据层

 

 

目录名前12和容器ID一致的:/var/lib/docker/containers/ 以及 /var/lib/docker/image/overlay2/layerdb/mounts/

但此处ID和容器名无直接关联,需要用到inspect --format ''命令取得关联,容器的存储配置和此目录名相关

命令:

docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "9e07ed2704ba4c60d3694b2d12f57da8a4b5055281d250e48a8282f76362c40f"

输出结果:

3262, 95f1cc99809501fe6c5133bbadd1a973b938425fd87a5ff98e3f4ab79970589a, /nginx-ingress, /var/lib/docker/overlay2/9e07ed2704ba4c60d3694b2d12f57da8a4b5055281d250e48a8282f7/work

其中/nginx-ingress是容器名,通过docker ps |grep nginx-ingress 或 kubectl get po -A|grep nginx-ingress 就可以定位到了

 

我这里确认后是k8s的Ingress入口pod这几天日志暴增,导致磁盘告警;采取的方法是使用 kubectl delete 清除这个有大量历史日志的pod,

集群会自动重建一个新pod,以此解决问题。记得日志需要的话先捞出来。

  

总结:了解目录、确认关联、解决思路、验证、实施。

 

 

 

百度一下    谷歌翻译

 

 

 

 

 

 

【书君方案】 简洁、完整、漂亮、记忆深刻

 

 

 

 

 

 

©2022 BLUBN.HonL   京ICP备15053931号   书君   bookfooked.com V1.1