docker磁盘爆满,linux docker /var/lib/docker/overlay2占用磁盘原因分析

问题描述

提示:这里描述项目中遇到的问题:

某天发现自己的博客网站挂掉了。上腾讯云发现是磁盘已经满了
在这里插入图如图片描述

原因分析:

一般原因有下列几种情况,逐步分析即可
1.docker镜像占用磁盘
2.docker日志
3./var/lib/docker/overlay2下的容器文件(主要)

解决方案:

一、docker镜像占用磁盘

这种情况先使用 docker images 对象查看有哪些镜像,可以手动删除一些很大不用的,也可以用下面的命令批量删除无用的镜像。

这个命令会删除未被任何容器使用的镜像。

docker image prune   //删除不再使用的镜像

`删除未使用的资源(容器、镜像、卷和网络等)

docker system prune   //这个命令会删除所有未使用的 Docker 资源,包括容器、镜像、卷和网络等

二、docker日志

Docker 容器的日志文件可能会增长并占用大量的磁盘空间。可以检查并删除不再需要的容器日志文件。

这个命令将删除 /var/lib/docker/containers/ 目录下的容器日志文件。

sudo find /var/lib/docker/containers/ -name "*-json.log" -type f -delete   

docker日志linux中由服务产生的日志(重要)

这个命令将直接列出linux中大于100M的文件。

find / -size +100M -type f   

在这里插入图片描述
可以看到大量的日志文件跟jar包,又是一大波能清理的。

三、/var/lib/docker/overlay2下的容器文件(主要)

执行以上方法清除镜像跟大日志后发现,才释放了四个G
在这里插入图片描述

说明根本原因在于overlay2下,于是可以利用以下命令一步步找出根源所在。

/var/lib/docker/overlay2 目录下的大文件是Docker镜像或容器的层(layers)。这些层可能是由于之前的Docker容器未正确清理或删除,导致残留的层文件。

//进入docker目录
cd /var/lib/docker  
//检索文件的最大深度1,即只检索汇总计算当前目录下的文件
du -h --max-depth=1  

在这里插入图片描述

执行后发现确实是overlay2下占用最大(此处有些人也可能是volumes占用很大),根据情况继续往下找,这里我就进入overlay2往下找

![在这里插入图片描述](https://img-blog.csdnimg.cn/59e025f5f8804a14a38efae6a82ee148.png在这里插入图片描述

发现有很多容器,仔细发现有几个占用特别大,于是先用命令吧大文件过滤出来

du -h --max-depth=1 --threshold=5G  //只显示大于5GB的文件和目录的磁盘使用情况

在这里插入图片描述

执行发现三个7G的文件夹,我们首先进入第一个文件夹看看到底是哪些文件这么大,继续往下找

在这里插入图片描述

这里出现了两个docker比较重要的文件夹

  1. diff 文件夹: diff 文件夹是一个只读的文件系统层,它包含了Docker镜像的变更内容。当您对容器进行修改或添加新文件时,这些变更会被记录在 diff 文件夹中。每个Docker镜像都有一个对应的 diff 文件夹,用于存储与基础镜像的差异
  1. merged 文件夹: merged 文件夹是一个可读写的文件系统层,它是由基础镜像和 diff 文件夹合并而成的。当您启动一个Docker容器时, merged 文件夹中的内容将作为容器的文件系统。这个文件夹是容器运行时的可写层,您可以在容器中对文件进行修改或添加新文件,这些修改将存储在 merged 文件夹中。

综上所述 这两个文件夹内容是一样的 merged会多一些由容器本身产出的写文件,进merged继续往下找
在这里插入图片描述

终于发现最里面果然还是一些log日志文件,虽然不大但是却耐不住很多。
在这里插入图片描述

sentinel-record.log.2023-01-25.0 文件是Redis Sentinel的日志文件。Redis Sentinel是Redis的高可用性解决方案之一,用于监控和管理Redis主从复制和故障转移。

sentinel-record.log 文件包含了Redis Sentinel的运行日志,记录了Sentinel的各种操作、事件和状态信息。这些日志对于故障排查、性能监控和系统运维非常有用。

可以根据需要删除 sentinel-record.log 文件。然而,在删除之前,请确保您不再需要这些日志文件,或者已经备份了重要的日志信息。另外,您还可以考虑将日志文件进行归档或定期清理,以便释放磁盘空间并保持系统的性能。

由于我是自己的项目,所以这些日志文件统统删除。 删除后可以修改配置限制其日志大小跟数量
对于Sentinel的日志文件,您可以通过配置来限制其大小和生成的数量。以下是一些常用的方法:

  1. 日志文件大小限制:您可以通过修改Sentinel的配置文件来设置日志文件的大小限制。在Sentinel的配置文件(通常是 sentinel.conf )中,可以找到日志相关的配置项,例如 logfile-maxsize 。您可以将其设置为所需的大小,以限制日志文件的大小。例如,设置为 logfile-maxsize 10MB 表示日志文件的大小限制为10MB。
  1. 日志文件数量限制:您可以通过设置日志文件的数量来限制生成的日志文件数量。在Sentinel的配置文件中,可以找到类似于 logfile-max-nums 的配置项。您可以将其设置为所需的数量,以限制生成的日志文件数量。例如,设置为 logfile-max-nums 10 表示最多生成10个日志文件。

猜你喜欢

转载自blog.csdn.net/weixin_43756185/article/details/132709101