首页 > 其他分享 >docker的overlay2中存的都是什么and如何清理/var/lib/docker/overlay2

docker的overlay2中存的都是什么and如何清理/var/lib/docker/overlay2

时间:2022-10-18 09:11:43浏览次数:83  
标签:容器 lib 占用 文件夹 var docker overlay2

前段时间有客户反映我们部署服务的服务器磁盘快满了,联系我们说看看清理一下
于是就开始看服务器
我们所有的服务都是使用docker部署的,经过检查,这次占满了磁盘的都是在/var/lib/docker/overlay2目录下的文件夹,这个路径一看就是docker的存储目录,但是为什么docker跑得好好的他的占用会变高呢?

 


图中可见,/var/lib/docker/overlay2目录的占用大的离谱
那我们进来看看这个目录下是什么占用了这么大的空间

 


上图可见,/var/lib/docker/overlay2目录下的文件夹名基本都是这种md5编码,并且其中有一个a875e开头的文件夹的占用达到了518G,相当恐怖
那/var/lib/docker/overlay2目录存 的到底是什么呢?为什么能有这么大的占用?我们又需要如何去进行清理呢?
我查阅了一些博客文章了解到,overlay2是docker使用的文件存储驱动,也就是说,在/var/lib/docker/overlay2目录下的文件都是docker使用的存储【废话】
overlay2是分层存储,每一层通过本层的md5作为文件夹名来命名,如果要存储的两个东西【比如两个镜像】的底层几层的内容是一样的,那他们的md5就也是一样的,通过md5核验,确认他们这几层是一样的之后,在overlay2中实际存储的时候,这几层就可以只存储一份,然后由这两个东西共用,来达到节省空间的目的。

 


所以我们在/var/lib/docker/overlay2目录下看到的这茫茫多的md5,就是一层一层的数据

那为什么我们客户服务器上的a875e开头的文件夹占用会达到518G呢?究竟是什么东西占用了这么多?
我们进这个文件夹里看一眼

 


可以看到,在这个a875e的文件夹中,有一个diff文件夹占用259G,一个merged文件夹占用259G,直觉告诉我这两个文件夹中存储的应该是基本一致的东西

所以是什么东西呢???

经过排查,我们发现是我们一个服务会将一些运行文件存储在本地文件路径中,但是,这个服务在启动的时候因为一些疏忽,没有将他要存储文件的路径挂载到宿主机中,导致这个服务一直在往容器内的某个路径写文件,这个服务在运行了一年多之后写入容器内本地的文件终于到了……259G,但虽然在容器内占用是259G,但是在宿主机上,变成了diff文件夹占用259G,merged文件夹占用259G,合共518G,磁盘空间就这么被吃掉了。

为了测试我们的推断,我们进入容器内删除了那些本地文件,然后再在宿主机上查看宿主机的磁盘占用,果然,我们在容器内删除的文件大小是259G,但是宿主机上空出了518G的空间,故我们可以确定,我们在a875e的文件夹中看到的diff文件夹和merged文件夹,其中实际占用巨量空间的东西就是我们在容器内存储的本地文件,换言之,/var/lib/docker/overlay2目录会存储我们起的容器中的文件【应该还包括我们的镜像本身,docker镜像也是分层存储在这里的,毕竟容器跑起来以后系统相关的一些文件是和镜像一样的】

所以回到标题
docker的overlay2中存的都是什么?
存的是我们的镜像文件和容器内的文件
如何清理/var/lib/docker/overlay2?

  • 删除不用的镜像
  • 检查是否有容器内的服务会往容器内的本地写文件
  • 检查各容器的磁盘占用,如果有发现磁盘占用过高的情况则对应处理【原则上如果容器内服务有写文件行为,则写文件的目录应当挂载到宿主机上,而不是直接往容器的本地写
  • 需要应急处理的话可以先进入容器内直接删除容器内可以删除的文件
from:https://blog.csdn.net/zxxshaycormac/article/details/120433857

标签:容器,lib,占用,文件夹,var,docker,overlay2
From: https://www.cnblogs.com/chentiao/p/16801445.html

相关文章

  • Ubuntu 环境下安装 Docker
    目录1.系统要求2.添加镜像源3.安装DockerCE和containerd4.让普通用户使用Docker5.卸载Docker 1|01.系统要求Docker目前只能运行在64位平台上,并且要求内......
  • CentOs安装docker
    CentOs安装docker目录CentOs安装docker安装docker1、环境准备:linuxcentOS3.10版本及以上2、卸载(可选)3、需要的安装包4、设置镜像的仓库(推荐阿里云)5、安装dockerdock......
  • Docker的常用命令
    Docker的常用命令目录Docker的常用命令帮助命令1、镜像命令dockerimages查看所有本地的主机上的镜像dockersearch搜索镜像dockerpull下载镜像dockerrmi删除镜像2......
  • docker部署nacos配置mysql
    version:"3"services:mysql:restart:alwaysimage:mysql:latestcontainer_name:cloud_mysql......
  • Ubuntu 环境下安装 Docker
    系统要求Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过低的内核版本容易造成功能不稳定。用户可以通过如下命令检查自己的内......
  • python爬虫从0到1 -urllib_Cookie登录
    前言当我们进行某项数据采集的时候,有时会让我们进行登录,那我们要怎样去解决这个问题呢?为了不让我们爬取这些数据,又采取了怎么样的反爬措施呢?下面就让我们带着这些问题去一探......
  • Docker容器进入的4种方式(推荐最后一种)
    在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器......
  • CentOS — 安装 Docker
    文章目录一、简介二、安装三、启动四、配置镜像加速器一、简介Docker从17.03版本之后分为CE(CommunityEdition)社区版和EE(EnterpriseEdition)企业版。社区版免费,支持......
  • 基于Gitlab+Gitlab-CI+Docker的持续集成部署(含.gitlab-ci.yml说明)
    ​安装gitlabhttps://www.gitlab.com.cn/yuminstallcurlpolicycoreutilsopenssh-serveropenssh-clientsyuminstallpostfixsystemctlenablepostfixsystemctlstart......
  • 什么是Docker
    目录什么是Docker?Docker的应用场景有哪些?Docker的优点有哪些?Docker与虚拟机的区别是什么?Docker的三大核心是什么?如何快速安装Docker?如何修改Docker的存储位置?Dock......