docker清理

一、docker日志文件清理

df -h查看磁盘情况,overlay是docker的文件堆叠系统 满了的话清理其他目录对该文件不会起作用,不能直接进到目录里删除文件,会造成docker容器无法启动,可以用过清除docker系统的日志和清理无用镜像解决

docker image prune -a 清理全部未使用镜像(已退出容器在使用的镜像也不会被清理)

1.清理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 ========"
2.在docker的daemon.json中增加限制最大日志保留大小和数量
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",  #最大保留大小
    "max-file": "5"     #最大保存文件数量
  }
}

添加配置后需要重启docker

二、nginx日志清理

1.需要紧急解决

awk -F'[][]' '$2 > "01/Jan/2024"' app.dingtax.cn.log > app.dingtax.cn.log(不会影响容器正常运行)

使用awk命令过滤出你需要保留日志的日期,然后把过滤出的日志重定向到源文件里,!!不要直接使用 最好先过滤看一下是不是自己需要留存的日志,如果日志格式不一样,需要自行切割。

2.添加日志清理定时任务

注意,脚本中的容器名需要按自己运行的容器修改,

#!/bin/bash
# 使用方法 */5 * * * *  bash /opt/logcut.sh nginx目录或者/apps/logs应用目录
#
#

#日志目录
LOGDIR=$1
#日志保留天数
EXPAIDAY=14
#日志保存路径
ZIPDIR=/logs
#当前时间
DATE=$(date +%y-%m-%d-%H-%M-%S)


#####nginx日志处理函数
function nginxzip() {
    if [ ! -d "$ZIPDIR/nginx" ]; then
         mkdir -p $ZIPDIR/nginx
    fi
    NGINX_DIR=$1
    DATE=$(date +%y-%m-%d-%H-%M-%S)
    cd $NGINX_DIR
    find ./ -name '*.log' | xargs gzip -9
    docker exec openresty nginx -sreload
    find ./ -name '*.log.gz' | xargs -I {} mv {} $ZIPDIR/nginx/{}.${DATE}.gz
}

#根分区使用率
root_uage=`df -h | grep -E '/$' | awk '{print $5}' | awk -F'%' '{print $1}'`

if (( $root_uage <= 60 )); then
    nowdate=$(date +%d)
    nowdate=`expr $nowdate + 0`
#判断时间戳文件是否存在不存在 即滚动一次
    if [ -f "/tmp/lastdate" ]; then
        lastdate=$(cat /tmp/lastdate)
    else
        lastdate=0
    fi
#每天执行一次
    if (( $lastdate != $nowdate )); then
        nginxzip $LOGDIR
        find /logs -name '*log*' -mtime +$EXPAIDAY -exec rm -rf {} \;
#写入时间戳
        echo $nowdate > /tmp/lastdate
    fi
###在存储空间使用小于80%做如下操作即可
elif (( $root_uage <= 80 )); then
        nginxzip $LOGDIR
        find /logs -name '*log*' -mtime +$EXPAIDAY -exec rm -rf {} \;
fi

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值