关于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的占⽤还是很⼤
由于构建的镜像,项⽬⽇志是存在本地的所以到⽇志⽂件在本地的位置进⾏清理项⽬⽇志⽂件减少磁盘占⽤
参考:
下⾯给⼤家补充介绍下docker overlay2占⽤⼤量磁盘空间处理⽅法docker进入容器
在使⽤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清理Overlay2占⽤磁盘空间的⽂章就介绍到这了,更多相关docker清理Overlay2占⽤磁盘空间内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。