docker overlay2占用大量磁盘空间清理

环境

docker版本:

Docker version 1.13.1, build 7f2769b/1.13.1

linux版本

Linux version 3.10.0-693.2.2.el7.x86_64

前因

线上系统出现问题,磁盘空间不足,导致线上系统不可用,最终定位到了问题原因,这篇文章就是记录清理overlay2目录的。

这篇文章相对来说是经验分享或者是记录把,也是历练下自己的总结能力,因为docker自身了解不是很深入,有什么不足的地方感谢大佬们指点。

正文

通过各种途径查询清理overlay2相关资料,分为两种

  • 第一种:通过命令清理docker,例如下

    • docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
    • docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉

这里的命令都尝试过了,这些也是经常清理的,所以效果不是很大,但是可以尝试下,操作时一定要先知道这个命令的作用,我上面只是命令的概述,不详细

  • 第二种就是迁移docker

    • 先不说操作步骤,迁移肯定要重启容器,这就意味者服务会中断,对线上环境来说这是不切合实际的,所以直接忽略。(想要了解可以在网上找下很多的,在此就赘述了)

以上通过各种途径查阅资料好似整体无济于事。

之所以去查阅各种资料,主要是对docker不是很内行,且进到overlay发现里面文件都是和容器相关的文件,就没有深入去看,怕误操作导致容器不可用,所以自己不敢轻易删除什么,那到此为止,我回过头再去看下,这里面到底存储了什么,大致猜测一定是日志并且可以清理的。

下图 overlay2目录 12G
在这里插入图片描述

再进去看overlay目录,这个文件名字应该就是容器id
在这里插入图片描述

然后找到那个4.3G的目录进去看看,可以看到logs这个目录占4.2G,这个目录下面也是我们服务产生的日志,真相大白了,这个日志不应该在这出现的,我们已经映射到物理机上了,docker-componse 配置问提,先不管他,先解决清理这个目录,那就把这个目录下面的日志,echo -> ‘’ file
在这里插入图片描述

到这里就清理下logs目录,其实不建议删除,这个删除容器不一定能释放这个空间,所以建议使用echo -> ‘’ -> [file],批量清理 ls [path] | xargs -I x -n 1 sh -c “echo > x”

本文章所需的命令:

du -sh *
罗列出当前目录文件所占磁盘大小

du [文件名字] -sh
查看指定文件占磁盘空间大小

echo -> ‘’ -> [文件名字]
清空指定文件内容

ls [目录名字,或者模糊搜索] | xargs -I x -n 1 sh -c “echo > x”
批量清空文件内容
例如:清除当前文件夹下的以system开始且以journal后缀的文件 ls system*.journal | xargs -I x -n 1 sh -c “echo > x”

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐