关于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占用磁盘空间内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决docker磁盘空间不足问题

    docker所在服务器,运行了一段时间后,发现服务器磁盘目录快不够用了.通过du -h --max-depth=1 / 逐级目录排查,发现/var/lib/docker目录文件过大.通过以下方法,解决该问题. 转移数据修改docker默认存储位置 有多种方式修改docker默认存储位置. 最好是在docker安装完后,第一时间修改docker默认存储位置为其他大目录或者磁盘中.规避迁移数据过程中造成的风险. - 停止docker服务 systemctl stop docker - 创建新的doc

  • Docker Overlay2磁盘空间占用过大清理的方法实现

    目录 1.第一种情况 2.第二种情况 3.最后,可通过安装portainer [Docker的图形化管理工具] 在日常线上环境中,我们通常会来做利用Docker来做容器化管理,通过运行容器来执行任务等. 但是,随着业务量的不断增大,容器的不断启动,往往会出现磁盘空间不足, 1.第一种情况 是因为docker中部署的系统中日志内容的不断扩大. 这种情况下,我们可手动,或定时任务清理. 对于/var/lib/docker/overlay2 空间占用,存在很多误导的方法是去迁移路径等..其实磁盘空间的

  • CentOS 7.x docker使用overlay2存储方式

    编辑/etc/docker/daemon.json添加以下内容: { "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } 安装依赖: yum install yum-plugin-ovl -y 否则会报以下错误: May 05 18:20:45 node1 dockerd[49605]: Error

  • 如何清理 Docker 占用的磁盘空间的方法

    Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收. docker 占用的空间可以通过下面的命令查看: $ docker system df TYPE 列出了docker 使用磁盘的 4 种类型: Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的. Containers:运行的容器占用的空间,表示每个容器的读写层的空间. Lo

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

    使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,通过命令df -h 发现overlay占用较高.通过命令docker system prune -a 清理无用镜像.缓存.挂载数据,也没有什么改变. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收. docker 占用的空间可以通过下面的命令查看: $ docker system df prune指令默认会清除所有如下资源: 已停止的容器(container) 未被任何容器所使用

  • MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句

    查询所有数据库占用磁盘空间大小的SQL语句: 复制代码 代码如下: select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size,concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_sizefrom information_schema.tablesgroup by TABLE_SCHEMAorder by dat

  • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度. du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh 一.du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments)

  • OpenStack Ceilometer用MongoDB解决占用磁盘空间过大问题

    OpenStack Ceilometer用MongoDB解决占用磁盘空间过大问题 背景:Ceilometer使用MongoDB作为数据库,不断进行采样,导致数据量膨胀,占用过多的磁盘空间. 知识背景 1.数据库文件类型 1.1. journal 日志文件 跟一些传统数据库不同,MongoDB的日志文件只是用来在系统出现宕机时候恢复尚未来得及同步到硬盘的内存数据.日志文件会存放在一个分开的目录下面.启动时候MongoDB会自动预先创建3个每个为1G的日志文件(初始为空). 1.2. namespa

  • Linux 实现定时文件占用磁盘空间大小操作方法

    打开定时任务编辑,cent 默认使用vim直接打开.ubutun如果装了多种编辑器第一次打开的时候是指定编辑器的操作. (3) */1 * * * * sh /root/Shell/monitor.sh 将这一行添加进文件中.表示每隔一分钟执行一次 sh /root/Shell/monitor.sh 命令,具体更多的定时格式可以网上查询.简单的循环监测只需要这么多 (4) service crond start 启动定时任务.ubutun上是 service cron start (5) 查看c

  • lnmp下如何关闭Mysql日志保护磁盘空间

    LNMP一键包安装的Mysql默认开启Mysql日志,如果网站对数据库读写较为频繁的话可能会产生大量日志,并占用磁盘空间,还有可能导致VPS的硬盘闲置空间消耗满导致数据库无法开启. 本教程的路径适用于LNMP一键安装包环境,其它环境请根据实际情况操作. 若需要关闭,请执行以下操作: 一.修改文件配置 修改/etc/my.cnf,找到以下字符 复制代码 代码如下: log-bin=mysql-bin binlog_format=mixedbash 注释这两行,如下: 复制代码 代码如下: #log

  • docker清理大杀器/docker的overlay文件占用磁盘太大的解决

    [看网上都是什么迁移文件的就感觉不靠谱,治标不治本啊(这不应该是一个新生代coder的样子)] du -sh* 一路查下去,发现overlay这个文件夹已经爆了. docker system prune -a 才清理了7g的空间,那个文件夹还是30g 磁盘占用路从100%下降到80%左右,这哪里行啊,再跑两天还是满! 最后大杀器来了 安装portainer docker安装教程一堆 我这里使用dokcer-compose部署的所以下面是配置 portainer: image: portainer

  • Docker磁盘空间使用分析与清理的方法

    本文介绍了Docker磁盘空间使用分析与清理的方法,分享给大家,具体如下: 用了一段时间Docker后,会发现它占用了不少硬盘空间.还好Docker 1.13引入了解决方法,它提供了简单的命令System来查看/清理Docker使用的磁盘空间. 前情提要 #MyVersion [root@dockercon ~]# docker version Client: Version: 17.12.0-ce API version: 1.35 Go version: go1.9.2 Git commit

随机推荐