问题描述
提示:这里描述项目中遇到的问题:
某天发现自己的博客网站挂掉了。上腾讯云发现是磁盘已经满了。
原因分析:
一般原因有下列几种情况,逐步分析即可
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往下找
中,可以找到日志相关的配置项,例如 logfile-maxsize 。您可以将其设置为所需的大小,以限制日志文件的大小。例如,设置为 logfile-maxsize 10MB 表示日志文件的大小限制为10MB。
- 日志文件数量限制:您可以通过设置日志文件的数量来限制生成的日志文件数量。在Sentinel的配置文件中,可以找到类似于 logfile-max-nums 的配置项。您可以将其设置为所需的数量,以限制生成的日志文件数量。例如,设置为 logfile-max-nums 10 表示最多生成10个日志文件。