docker overlay2 耗尽磁盘解决办法

磁盘空间块没有了,经过定位发现,/var/lib/docker/overlay2 文件夹占用了大量空间 本文提供清理办法: 1,通过 docker system prune -a 命令清理掉 已停止的容器(container)未被任何容器...

磁盘空间块没有了,经过定位发现,/var/lib/docker/overlay2 文件夹占用了大量空间

本文提供清理办法:

1,通过 docker system prune -a 命令清理掉

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


2,使用 docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' 

观察 镜像pid,name和容器运行目录


3,通过 df -sh * 列出最大容量的文件夹,然后比较  2中的 容器目录的编号,可以知道是哪个容器导致磁盘耗尽



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

容器的磁盘占用

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

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

下面给大家补充介绍下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”为后缀的目录文件。使用如下命令会看到该文件的大小:

1
ll -h

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


cat /dev/null > *-json.log

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

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


  • 发表于 2022-05-17 12:51
  • 阅读 ( 112 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章