问题描述
提示:这里描述项目中遇到的问题:
某天发现自己的博客网站挂掉了。上腾讯云发现是磁盘已经满了。
原因分析:
一般原因有下列几种情况,逐步分析即可
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往下找
发现有很多容器,仔细发现有几个占用特别大,于是先用命令吧大文件过滤出来
du -h --max-depth=1 --threshold=5G //只显示大于5GB的文件和目录的磁盘使用情况
执行发现三个7G的文件夹,我们首先进入第一个文件夹看看到底是哪些文件这么大,继续往下找
这里出现了两个docker比较重要的文件夹
- diff 文件夹: diff 文件夹是一个只读的文件系统层,它包含了Docker镜像的变更内容。当您对容器进行修改或添加新文件时,这些变更会被记录在 diff 文件夹中。每个Docker镜像都有一个对应的 diff 文件夹,用于
存储与基础镜像的差异
。
- 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 文件。然而,在删除之前,请确保您不再需要这些日志文件,或者已经备份了重要的日志信息。另外,您还可以考虑将日志文件进行归档或定期清理,以便释放磁盘空间并保持系统的性能。文章来源:https://www.toymoban.com/news/detail-713167.html
由于我是自己的项目,所以这些日志文件统统删除。 删除后可以修改配置限制其日志大小跟数量
对于Sentinel的日志文件,您可以通过配置来限制其大小和生成的数量
。以下是一些常用的方法:文章来源地址https://www.toymoban.com/news/detail-713167.html
- 日志文件大小限制:您可以通过修改Sentinel的配置文件来设置日志文件的大小限制。在Sentinel的配置文件(通常是 sentinel.conf )中,可以找到日志相关的配置项,例如 logfile-maxsize 。您可以将其设置为所需的大小,以限制日志文件的大小。例如,设置为 logfile-maxsize 10MB 表示日志文件的大小限制为10MB。
- 日志文件数量限制:您可以通过设置日志文件的数量来限制生成的日志文件数量。在Sentinel的配置文件中,可以找到类似于 logfile-max-nums 的配置项。您可以将其设置为所需的数量,以限制生成的日志文件数量。例如,设置为 logfile-max-nums 10 表示最多生成10个日志文件。
到了这里,关于docker磁盘爆满,linux docker /var/lib/docker/overlay2占用磁盘原因分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!