Docker Overlay2磁盘空间占满

前言

在日常生产环境中,我们通常会使用Docker来做容器化管理,通过运行容器来执行任务。但是,随着业务量的不断扩大,容器的不断启动,往往会出现磁盘空间不足的情况。

1、查看当前磁盘使用情况

        df -h

其中Use%过大的目录需要排查

2、进入目录,查看当前目录下的文件大小

        du -sh *

发现containers目录、overlayer2目录、volumes目录占用空间比较大

containers目录

进入某个容器目录,发现里面是Docker的日志文件

查看同级目录下的所有-json.log

du -ha /home/docker/containers/ | grep "json.log" | sort -rh

volumes目录

        进入volumes目录中,查看大小

        du -sh *

进入某个volume,查看其中内容,发现是数据卷内容,可以看情况清理

overlayer2目录

查看其中目录占用空间大小

发现其中部分目录占用空间较大,进入里面看看都由哪些东西

merged 和 diff 占磁盘空间比较大,work 目录可以不用管。

这两个文件夹内容开始是一样的 ,merged会多一些由容器本身产出的写文件,进merged继续往下找

进入./csp目录,发现其中有很多的日志文件

我这里是sentinel的日志,个人项目视情况是否删除,或者通过配置限制文件个数和大小。

3、解决方法

1、docker 镜像占用磁盘

Docker 中查询磁盘占用情况命令: docker system df

可通过执行docker system prune 命令可用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
【慎用】 docker system prune -a 命令清理更干净、彻底,可以将没有容器使用的Docker镜像都删掉。

2、containers目录

Docker 容器的日志文件可能会增长并占用大量的磁盘空间。可以检查并删除不再需要的容器日志文件。

(1)临时方案:这个命令将删除 /home/docker/containers/ 目录下的容器日志文件。

sudo find /home/docker/containers/ -name "*-json.log" -type f -delete

(2)稳定方案:设置容器服务的日志大小上线

方式一:每个容器都可以单独设置

logging:
  driver: "json-file"
  options:
    max-size: "256m"
    max-file: "3"
 

方式二:全局设置

方式三:contab定时执行清理脚本

echo "======== start clean docker containers logs ========"
logs=$(find /home/docker/containers/ -name *-json.log)
for log in $logs
        do
                echo "clean containers logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker containers logs ========"
 

3、volumes目录

可通过命令删除

find /var/lib/docker/volumes -type f -name "*.log" -delete

3、overlayer2目录

通过排查overlayer2下merged目录中的占用空间较大的目录排查是否需要删除

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值