关于docker清理Overlay2占用磁盘空间的问题(亲测有效)

 更新时间:2022年03月23日 10:52:12   作者:Small_StarOne  
使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,今天通过本文给大家详细介绍下docker清理Overlay2占用磁盘空间的相关知识,感兴趣的朋友一起看看吧

使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,通过命令df -h 发现overlay占用较高。通过命令docker system prune -a 清理无用镜像、缓存、挂载数据,也没有什么改变。

如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收。

docker 占用的空间可以通过下面的命令查看:

$ docker system df

prune指令默认会清除所有如下资源:

  • 已停止的容器(container)
  • 未被任何容器所使用的卷(volume)
  • 未被任何容器所关联的网络(network)
  • 所有悬空镜像(image)。

在这里插入图片描述

查询 overlay的作用的时候知道:

容器的磁盘占用

每次创建一个容器时,都会有一些文件和目录被创建,例如:

/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。/var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。
进入到/var/lib/docker/containers 目录下 通过 du -h --max-depth=1 查找大文件占用,发现这些文件中占用空间最大的是***-json.log**文件。而此文件的内容为docker生成的日志文件。

清理脚本:

#!/bin/bash
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker containers logs ========"

执行完脚本之后,通过命令df -h发现 /var/lib/docker/overlay2/ID的占用还是很大

在这里插入图片描述

由于构建的镜像,项目日志是存在本地的所以找到日志文件在本地的位置进行清理项目日志文件减少磁盘占用

参考:

https://crycrycry.blog.csdn.net/article/details/111244328

下面给大家补充介绍下docker overlay2占用大量磁盘空间处理方法

在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容。

此时,可通过手动或定时任务进行清除。

针对/var/lib/docker/overlay2空间占用很大网上提供了很多解决方案,其中有些误导的说法需要去迁移路径等操作。其实磁盘空间的占用和overlay没关系(它的usage和真实的disk usage相同),它只是一个docker的虚拟文件系统,真实的文件系统是前者/dev/vda1,可以看到路径所指为根目录,所以你要去找是哪里出现了垃圾。

通常情况下与overlay2的同级目录下会有如下的目录:

[root@iZ docker]# ls
builder  buildkit  containerd  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

而往往占用大量空间的日志文件位于containers下,该目录下存在如下目录:

[root@iZ containers]# ls
123ace927dc96745bac8ae09d0feddbdef853ff089c831bc80547b2d1115b0ac  635619a5ce22b551c5c75095b8b01647b9a02c839be64cd465e1542bfbec8ee6  a979b62fc10ab0ac54af4799d40c2c5865099883ff124012328ab3a8587c1dda

在目录中会存在以目录名为前缀,以“-json.log”为后缀的目录文件。使用如下命令会看到该文件的大小:

ll -h

然后可使用如下命令对该文件的内容进行清理:

cat /dev/null > *-json.log

清理完成可不重启服务,但如果允许建议重启一下docker服务。

在此执行df -h命令之后,你会发现overlay2所占的磁盘空间已经减小。

参考阅读:

定时清理docker私服镜像的方法

到此这篇关于docker清理Overlay2占用磁盘空间的文章就介绍到这了,更多相关docker清理Overlay2占用磁盘空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker Volume的用法看这一篇就够了

    Docker Volume的用法看这一篇就够了

    这篇文章主要介绍了Docker Volume的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 解决docker pull被复位出现的问题

    解决docker pull被复位出现的问题

    这篇文章主要介绍了解决docker pull被复位出现的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 关于如何使用docker部署centos系统测试环境

    关于如何使用docker部署centos系统测试环境

    这篇文章主要介绍了关于如何使用docker部署centos系统测试环境,Docker属于操作系统虚拟化技术,本文图文讲解部署过程,需要的朋友可以参考下
    2023-03-03
  • Docker login和logout的使用

    Docker login和logout的使用

    本文主要介绍了Docker login和logout的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Dockerfile中常用命令汇总

    Dockerfile中常用命令汇总

    本文给大家列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。希望大家能够喜欢
    2018-11-11
  • Docker多平台安装与配置指南的实现

    Docker多平台安装与配置指南的实现

    这篇文章主要介绍了Docker多平台安装与配置指南的实现,深入研究了Docker在Linux、Windows、和macOS等不同平台上的安装过程及Docker镜像管理、容器运维、使用Docker Compose进行多容器管理,以及网络与数据管理等,感兴趣的可以了解一下
    2024-01-01
  • 从零开始构建docker基础镜像的方法

    从零开始构建docker基础镜像的方法

    这篇文章主要介绍了从零开始构建docker基础镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Docker拉取ubuntu镜像并建立环境的详细过程

    Docker拉取ubuntu镜像并建立环境的详细过程

    在Docker实战中Ubuntu是一个常见的基础镜像,用于构建其他应用服务的容器,这篇文章主要给大家介绍了关于Docker拉取ubuntu镜像并建立环境的详细过程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • docker中通过nginx+confd动态生成配置的解决方案

    docker中通过nginx+confd动态生成配置的解决方案

    这篇文章主要介绍了docker:nginx+confd动态生成配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Docker在Windows系统中的安装和使用方法详解

    Docker在Windows系统中的安装和使用方法详解

    这篇文章主要给大家介绍了关于Docker在Windows系统中的安装和使用方法,Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,需要的朋友可以参考下
    2023-09-09

最新评论