docker overlay2磁盘占满解决方案

docker overlay2磁盘占满解决方案

1.定时清理日志(推荐)

  1. 打开定时器日志(ubuntu下、非ubuntu跳过此步骤)
    vi /etc/rsyslog.d/50-default.conf
    用 vim 打开 将 文件里的#cron.*前的#删掉
    然后重新启动rsyslog服务service rsyslog restart
    重启定时器
    systemctl restart cron.service (>=centos7)
    或者 service cron restart (<centos7)
    或者 /etc/init.d/cron restart (ubuntu)

  2. 编写定时脚本,定时器定时清理
    注意:windows下创建文件放到linux下会执行失败,请在linux下创建好,将内容复制进去

mkdir /home/pjnj/cron && touch /home/pjnj/cron/cleanLog.sh
vi /home/pjnj/cron/cleanLog.sh
chmod 777 /home/pjnj/cron/cleanLog.sh

复制如下内容

#!/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
docker system prune --all --force --volumes
echo "======== end clean docker containers logs ========"
  1. 定时器编写并启动定时器
    查看/var/log/corn.log 是否存在,不存在则创建
touch /var/log/cron.log
进入编辑模式
crontab -e
每隔1小时执行一次
0 */1 * * * /home/pjnj/cron/cleanLog.sh >/var/log/cron.log 2>&1
每天凌晨0点执行一次
0 0 * * * /home/pjnj/cron/cleanLog.sh >/var/log/cron.log 2>&1
每周一凌晨0点执行一次
0 0 * * 1 /home/pjnj/cron/cleanLog.sh >/var/log/cron.log 2>&1
重启定时器 
systemctl restart cron.service (>=centos7)
或者 service cron restart (<centos7)
或者 /etc/init.d/cron restart (ubuntu)

2.设置日志大小(可参考)

  vi /etc/docker/daemon.josn
  {
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "200m",
      "max-file": "5"
    }
  }

重启 daemon-reload、docker

  systemctl daemon-reload
  systemctl restart docker

3.清理未启用的images、containers、volumes(临时解决)

操作前请确保已经快照备份完成数据,并确保当前所有业务容器运行正常

  docker system prune --all --force --volumes
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值