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

 更新时间:2024年04月18日 11:01:52   作者:鬼鸮  
docke roverlay2是Docker中的存储驱动之一,用于管理镜像和容器层的数据,这篇文章主要给大家介绍了关于docker的overlay2中存的都是什么及如何清理/var/lib/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

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

总结

到此这篇关于docker的overlay2中存的都是什么及如何清理/var/lib/docker/overlay2的文章就介绍到这了,更多相关docker overlay2中存的是什么内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 云原生Docker容器自定义DNS解析

    云原生Docker容器自定义DNS解析

    Docker没有为每个容器专门定制镜像,那么怎么自定义配置容器的DNS配置呢?这篇文章主要给大家介绍了关于云原生Docker容器自定义DNS的相关资料,需要的朋友可以参考下
    2023-02-02
  • docker-compose部署配置jenkins的详细教程

    docker-compose部署配置jenkins的详细教程

    这篇文章主要介绍了docker-compose部署配置jenkins的详细教程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 详解Dockerfile 中的 COPY 与 ADD 命令

    详解Dockerfile 中的 COPY 与 ADD 命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。感兴趣的朋友跟随小编一起看看吧
    2018-09-09
  • 云服务器安装docker环境的解决方案

    云服务器安装docker环境的解决方案

    这篇文章主要介绍了云服务器安装docker环境的解决方案,可以使用termins连接服务器,详细介绍了docker安装与Portainer安装过程,需要的朋友可以参考下
    2024-04-04
  • Docker核心原理之 Cgroup详解

    Docker核心原理之 Cgroup详解

    cgroup的内核通过hook钩子来实现管理进程资源,提供了一个统一的接口,从单个进程的资源控制到操作系统层面的虚拟卡的过渡,今天通过本文给大家介绍Docker核心原理之 Cgroup详解,需要的朋友参考下吧
    2021-07-07
  • 防火墙控制Docker端口开放与关闭

    防火墙控制Docker端口开放与关闭

    本文主要介绍了防火墙控制Docker端口开放与关闭,通过实例演示了如何配置防火墙规则来实现对Docker端口的控制,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Docker 制作tomcat镜像并部署项目的步骤

    Docker 制作tomcat镜像并部署项目的步骤

    这篇文章主要介绍了Docker 制作tomcat镜像并部署项目 ,讲解如何制作自己的tomcat镜像,并使用tomcat部署项目,需要的朋友可以参考下
    2022-10-10
  • IntelliJ IDEA(2018版)安装docker插件的详细过程

    IntelliJ IDEA(2018版)安装docker插件的详细过程

    这篇文章主要介绍了IntelliJ IDEA安装docker插件的详细过程,开发工具使用的是IDEA2018.16版,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 详解Docker下nginx外挂配置和文件

    详解Docker下nginx外挂配置和文件

    这篇文章主要介绍了Docker下nginx外挂配置和文件,启动容器、查看容器和停止容器的方式方法给大家介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Docker四种网络模式演示及连通性测试

    Docker四种网络模式演示及连通性测试

    这篇文章主要为大家介绍了Docker四种网络模式演示及连通性测试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04

最新评论