定时清理docker日志
1、编辑脚本
vim docker_log_clear.sh
【
#!/bin/bash
#docker的日志是以json.log结尾的,存放路径自己查看:docker info | grep Dir
#获取容器的日志文件名
logs=$(find /data//docker/data/containers/ -name *json.log)
#获取时间格式:yyyy-mm-dd
date=`date +%F`
#创建目录备份日志,按日期目录存放
mkdir -p /data/docker_log_backup/$date
#下面的不行用这个:for log in ${logs[*]}
for log in $logs
do
#将日志备份到/data/docker_log_bakup
cp -rf $log /data/docker_log_backup/$date/
#插入空数据到日志
cat /dev/null > $log
done
#同时删除7天前的备份
find /data/docker_log_backup -maxdepth 1 -type d -mtime +7 | xargs rm -rf
】
或者
【
#!/bin/bash
#只清理特定容器的日志
logs[0]="`find /var/lib/docker/containers/ -name *bf397bf40aa9*json.log`"
logs[1]="`find /var/lib/docker/containers/ -name *c9a0570565a3*json.log`"
#踩坑:明明没有给log[2]赋值,但是测试输出logs[2]与logs[1]值一样,没办法logs[2]=""赋空值值
logs[2]=""
date=`date +%F`
mkdir -p /data/docker_log_backup/$date
for log in ${logs[*]}
do
cp -rf $log /data/docker_log_backup/$date/
cat /dev/null > $log
#echo $log >>/data/docker_log_backup/2.log
done
find /data/docker_log_backup -maxdepth 1 -type d -mtime +30 | xargs rm -rf
】
2、给脚本添加执行权限
chmod +x docker_log_clear.sh
3、添加计划任务
crontab -e
添加任务,每天的23:20执行
30 23 * * * docker_log_clear.sh > /dev/null 2>&1