Docker日志清理两种方式

本文介绍了如何通过配置daemon.json文件限制Docker容器日志大小,并展示了使用shell脚本定期清理日志的详细步骤,包括清理容器日志和overlay2日志,以及设置cronjob进行定时执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 通过daemon.json全域设置,日志文件大小

1.1 新建或打开/etc/docker/daemon.json文件

vi /etc/docker/daemon.json

{
  "log-driver":"json-file",                       #设置日志文件格式
  "log-opts": {"max-size":"20m", "max-file":"3"}  #设置最大20m,每个最多3个   
}
  • max-size=20m,设置容器日志大小上限是20M,
  • max-file=3,设置容器有三个日志,分别是:id+json、id+1.json、id+2.json

1.2 重启docker:

systemctl daemon-reload
systemctl restart docker.service

1.3 注意:

这种方式只对新建的容器有效,已经建过的需要重建。

2. 使用shell脚本定时清理日志

2.1 清理 /dockerimage/containers/ 中 *-json.log

##########################################################
## 每天01:30自动执行脚本
#30 01 * * * /root/clear_containers

## 建存放日志的文件
#vi clear.log
#chmod 755 clear.log
##########################################################


#!/bin/sh
echo "======== 清理容器日志文件超过1G的文件 ========"

#需要设置好docker的路径 【/home/dockerimage/containers】
logs=$(find /home/dockerimage/containers/ -name *-json.log)

time=$(date "+%Y-%m-%d %H:%M:%S")
# 创建日志文件变量,用于记录执行日志
FILE=/root/clear.log

echo $time>>${FILE}

# 清理/home/efuture/dockerimage/containers日志
for log in $logs
do
#ls -lh $log

FILE_SIZE=`ls -l $log | awk '{print $5}'`
echo $FILE_SIZE

#1G = 1073741824 字节
#2G=2×1024×1024×1024=2147483648B(字节)

if [ $FILE_SIZE -ge 1073741824 ]
then
echo "清理超过1G文件 $log"
echo "清理超过1G文件 $log">>${FILE}
cat /dev/null > $log
	 if [ $? -eq 0 ]; then
           echo "success">>${FILE}
  	 else
           echo "fail">>${FILE}
  	 fi
fi
done
echo "-----------------------------------任务结束-----------------------------------">>${FILE}

2.2 清理 /home/dockerimage/overlay2中log.log

##########################################################
## 每天01:30自动执行脚本
#30 01 * * * /root/clear_overlay2.sh

## 建存放日志的文件
#vi clear.log
#chmod 755 clear.log
##########################################################


#!/bin/sh
echo "======== 清理容器日志文件超过100M的文件 ========"

#需要设置好docker的路径 【/home/dockerimage/overlay2】
logs=$(find /home/dockerimage/overlay2/ -maxdepth 4 -type f -size +100M -name log.log | grep 'merged')

time=$(date "+%Y-%m-%d %H:%M:%S")

# 创建日志文件变量,用于记录执行日志
FILE=/root/clear.log

echo $time>>${FILE}

# 清理/home/efuture/dockerimage/overlay2日志
for log in $logs
do
#ls -lh $log

FILE_SIZE=`ls -l $log | awk '{print $5}'`
echo $FILE_SIZE

#1G = 1073741824 字节
#2G=2×1024×1024×1024=2147483648B(字节)

if [ $FILE_SIZE -ge 104857600 ]
then
echo "清理超过100M文件 $log"
echo "清理超过100M文件 $log">>${FILE}
cat /dev/null > $log
         if [ $? -eq 0 ]; then
           echo "success">>${FILE}
         else
           echo "fail">>${FILE}
         fi
fi
done
echo "-----------------------------------任务结束-----------------------------------">>${FILE}

2.3 配置定时任务

[root@llz-ds01 ~]# crontab -e
# 定时清理docker日志
30 01 * * * /root/clear_containers.sh
40 01 * * * /root/clear_overlay2.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炎方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值