亲测有效:docker清理Overlay2占用磁盘空间

编程入门 行业动态 更新时间:2024-10-24 10:25:53

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

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

参考:

http://www.choupangxia/2019/09/15/linux-centos-var-lib-docker-container%E7%9B%AE%E5%BD%95%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E5%AD%98%E5%82%A8%E7%88%86%E6%BB%A1%EF%BC%8C%E5%8D%A0%E7%94%A8%E5%A4%A7%E9%87%8F%E5%AD%98%E5%82%A8%E8%A7%A3/

https://crycrycry.blog.csdn/article/details/111244328?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&utm_relevant_index=4

更多推荐

亲测有效:docker清理Overlay2占用磁盘空间

本文发布于:2023-06-20 13:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/801923.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:磁盘空间   docker

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!