• docker清理Overlay2占用磁盘空间


    使用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生成的日志文件。

    查看脚本:

    1. echo "======== docker containers logs file size ========"
    2. logs=$(find /var/lib/docker/containers/ -name *-json.log)
    3. for log in $logs
    4. do
    5. ls -lh $log
    6. done

    清理脚本

    1. #!/bin/bash
    2. echo "======== start clean docker containers logs ========"
    3. logs=$(find /var/lib/docker/containers/ -name *-json.log)
    4. for log in $logs
    5. do
    6. echo "clean logs : $log"
    7. cat /dev/null > $log
    8. done
    9. echo "======== end clean docker containers logs ========"

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

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

  • 相关阅读:
    nginx--启动脚本
    【单片机毕业设计选题24009】-基于单片机的智能窗帘控制系统设计
    nfs 部署
    学习与工作
    人工智能生成内容AIGC:AIGC for Various Data Modalities: A Survey
    ssm保险办理系统毕业设计源码012232
    Unity ddx与ddy
    联想笔记本电脑novo键在哪?联想笔记本novo键位置介绍
    最小公倍数
    vue 中监听生命周期事件
  • 原文地址:https://blog.csdn.net/weixin_42023748/article/details/125443715