docker | 定时清理docker容器日志

2020-08-18  本文已影响0人  炒面Z

场景:
docker 容器启用一段时间之后日志会逐渐累积,越来越臃肿,可能高达十几G,我们需要定期自动清理此容器日志

1. 以下两个shell脚本可以查看和清理所有docker 容器日志

#!/bin/sh
echo "======== docker containers logs file size ========"  
logs=$(find /var/lib/docker/containers/ -name *-json.log)  
for log in $logs  
        do  
             ls -lh $log   
        done 
#!/bin/sh 
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. 脚本人工执行测试

root@iZbp178t3hp8rsxpmyzfe2Z:/opt/docker-sh# ./docker_log_size.sh 
======== docker containers logs file size ========
-rw-r----- 1 root root 4.3G Aug 18 16:14 /var/lib/docker/containers/c4e04562d33f1898eb1dd3d49ddd5a90dc3b989a3efca110bd44893829fc036c/c4e04562d33f1898eb1dd3d49ddd5a90dc3b989a3efca110bd44893829fc036c-json.log
-rw-r----- 1 root root 292K May  7 18:30 /var/lib/docker/containers/9a5c76f683da95551377ac4f0f60f58d0df1fcfc5f12c25cff2811afb194b632/9a5c76f683da95551377ac4f0f60f58d0df1fcfc5f12c25cff2811afb194b632-json.log
-rw-r----- 1 root root 130M Aug 18 16:25 /var/lib/docker/containers/6759d405990d2d881c5af440e2f25715a48e8c9acaf44af4d51baeb6e15eca08/6759d405990d2d881c5af440e2f25715a48e8c9acaf44af4d51baeb6e15eca08-json.log
-rw-r----- 1 root root 58K Apr 21 14:53 /var/lib/docker/containers/cd11f02c3b7ba141e2874ececa31814a0c2cb5442169a0cd28c85b0aad254d9c/cd11f02c3b7ba141e2874ececa31814a0c2cb5442169a0cd28c85b0aad254d9c-json.log

root@iZbp178t3hp8rsxpmyzfe1Z:/opt/docker-sh# ./clean_docker_log.sh 
======== start clean docker containers logs ========
clean logs : /var/lib/docker/containers/13487e209673f8e3563bfcac486d0bcf8bc47a7ceb13e63967c4d69adf48bf1b/13487e209673f8e3563bfcac486d0bcf8bc47a7ceb13e63967c4d69adf48bf1b-json.log
clean logs : /var/lib/docker/containers/02f4a2ec4dce7c6ed4e53448fd5fb3277b045d5727c74a0eba28779647a3a673/02f4a2ec4dce7c6ed4e53448fd5fb3277b045d5727c74a0eba28779647a3a673-json.log
clean logs : /var/lib/docker/containers/837fa488089ba2e5c89d61a7eaf5c677ce2a239a7b13034bc17dee1ba07b20b1/837fa488089ba2e5c89d61a7eaf5c677ce2a239a7b13034bc17dee1ba07b20b1-json.log
======== end clean docker containers logs ========

3. crontab 定期清理日志

使用linux的crontab命令每天晚上2点定期执行脚本清空容器日志

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

1. 先查看定期命令,是否已存在相当指令
root@iZbp178t3hp8rsxpmyzfe1Z:/opt/docker-sh# crontab -l
root@iZbp178t3hp8rsxpmyzfe1Z:/opt/docker-sh# 

2. 新增指令,保存指令:   0 0 2 * * ?  /opt/docker-sh/clean_docker_log.sh
root@iZbp178t3hp8rsxpmyzfe1Z:/opt/docker-sh# crontab -e

docker exec -u root -it grafana sh 用root权限进入容器内部

上一篇 下一篇

猜你喜欢

热点阅读