使用脚本定时自动清理openwrt的docker容器日志

最近在研究网易爆米花刮削小雅资源,由于网盘的风控策略,短时间内连续大量访问会联系报错。导致产生一堆小雅容器报错日志,想要查找有用的信息需要翻好多页,而且docker容器的日志自己并不会自动删除,就算是重启容器还会保留之前的日志一直累计,除非占用掉了全部存储空间。
网上也有很多清理docker日志的方法,比如限制日志文件大小,设置定时任务等等。
因为我的docker是跑在openwrt系统下面的,所以有些方法不太适用。最后在博客园找到一篇文章,里面的脚本基本上适用我目前的环境,只需要修改里面的docker安装路径即可。

创建脚本

首先需要确定你docker的安装路径记录下来,例如我这边docker安装在了-/mnt/mmc1-4/docker目录下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mkdir -p /opt/docker-sh

cat > /opt/docker-sh/clean_docker_log.sh<< EOF
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=\$(find /mnt/mmc1-4/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 ========"
EOF


cat > /opt/docker-sh/docker_log_size.sh<< EOF
#!/bin/sh

echo "======== docker containers logs file size ========"

logs=\$(find /mnt/mmc1-4/docker/containers/ -name *-json.log)

for log in \$logs
do
ls -lh \$log
done

EOF

chmod +x docker_log_size.sh clean_docker_log.sh

注意脚本中两处路径需要替换成你实际docker的安装路径!

手动清理

进入到脚本所在文件夹

1
cd opt/docker-sh  

查看日志大小

1
./docker_log_size.sh 

清理所有日志

1
./clean_docker_log.sh

设置定时任务

编辑定时任务

1
crontab -e  

键入 a 进入编辑模式,创建定时任务(每天晚上2点定期执行脚本清空容器日志)

1
0 2 * * * /opt/docker-sh/clean_docker_log.sh  

保存退出:wq 回车

引用

定时清理docker容器日志 - 一看就懂 - 博客园