场景:
docker 容器启用一段时间之后日志会逐渐累积,越来越臃肿,可能高达十几G,我们需要定期自动清理此容器日志
1. 以下两个shell脚本可以查看和清理所有docker 容器日志
- docker_log_size.sh 查所有容器日志大小脚本
#!/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
- clean_docker_log.sh 清空所有容器日志脚本
#!/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
网友评论