docker部署项目/var/lib/docker/overlay2目录满了该如何清理

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享
免费资源网 – https://freexyz.cn/

一、问题

今天突然发现跑服务器上的项目挂了,上去看了一下原来是磁盘满了。

df -h

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图

看来是目录 /var/lib/docker/overlay2 下占满了磁盘,看看里面是什么。

二、解决

1、查看 /var/lib/docker 目录

这一块只是查找哪些文件占满了磁盘,不感兴趣的朋友可以不看。

/var/lib/docker 目录是 docker 的默认目录,进去看看

cd /var/lib/docker

检索文件的最大深度1,即只检索汇总计算当前目录下的文件

du -h –max-depth=1

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图1

(1)、containers 目录

可以看到 containers 中占磁盘空间最大,这是 docker 存储镜像的目录,进去看看里面有什么

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图2

看不出什么来,继续进入

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图3

可以看到一个 -json.log 的文件很大,竟然有4G多,这是 docker 的日志文件,看看 containers 目录的其他子目录是不是也有这个类型的文件

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图4

看来也有,并且和所在目录同名,直接查看所有的 -json.log 目录吧

du -ha /var/lib/docker/containers/ | grep “json.log” | sort -rh

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图5

嗯。。。各个都不小,把他们全清了也能清出来很可观的空间了。

等会停了容器再清。

(2)、volumes 目录

这里接着看看 volumes 目录

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图6

看到也是类似 containers 目录的东西,先进第一个看看

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图7

可以看到是一个 _data 目录,看不出什么,继续进入

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图8

其中 flow.jar 是我的jar包,目录 logs 应该就是日志文件了,进去看看

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图9

还放在我的包名命名的目录里,继续进入

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图10

也是很多的日志文件。。。回到 logs 目录统计一下吧

du -h –max-depth=1

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图11

可以看到有5G多。。。

同样的方式进入 volums 目录中的第二个子目录

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图12

可以看到也有2G多。。。

也可以直接查看目录的详细信息,命令如下:

du -ha /var/lib/docker/volumes/ | grep “info.*.log” | sort -rh

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图13

可以看到有很多的日志文件,单个虽然不大,但却很多。

这里也先不清,后面再清。

(3)、overlay2 目录

再看看 overlay2 目录

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图14

虽然只有11G,但进去发现目录挺多,先看看各个目录的大小

du -h –max-depth=1

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图15

找出最大的应该目录,看看里面有什么

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图16

看看哪个文件夹比较大

du -h –max-depth=1

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图17

可以看到 merged 和 diff 占磁盘空间比较大,work 目录可以不用管。

diff :

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

merged:

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

2、清理

前面已经知道了日志在

/var/lib/docker/containers

/var/lib/docker/volumes

/var/lib/docker/overlay2(1)、清理 /var/lib/docker/containers 目录

先创建清理脚本文件,这里名为 docker_logs_clean.sh ,可以自定义,命令如下:

touch docker_logs_clean.sh

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图18

查看文件可以发现 docker_logs_clean.sh 是只读的

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图19

赋予读写权限,命令如下:

chmod 777 docker_logs_clean.sh

docker部署项目/var/lib/docker/overlay2目录满了该如何清理插图20

然后在加入如下脚本:

echo “======== start clean docker containers logs ========”
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo “clean containers logs : $log”
cat /dev/null


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容