以下是一个用于清理Docker日志的Shell脚本:
#!/bin/bash
#清除Docker容器日志的脚本
#设置日志保存时间为7天,可以根据实际需要自行修改
LOG_SAVE_TIME=7
#获取当前时间戳
CURRENT_TIME=$(date +%s)
#列出所有的容器
CONTAINERS=$(docker ps -a -q)
#遍历所有容器,对于每个容器清理日志
for container in ${CONTAINERS}
do
#获取容器的日志路径
LOG_PATH=$(docker inspect --format='{{.LogPath}}' $container)
#如果日志路径不为空,则清理过期日志
if [[ ! -z ${LOG_PATH} ]];
then
#获取日志文件最后修改时间
LOG_LASTMOD=$(date +%s -r ${LOG_PATH})
#计算日志保存时间
LOG_AGE=$(( (${CURRENT_TIME} - ${LOG_LASTMOD}) / 60 / 60 / 24 ))
#如果日志保存时间超过设置的时间,则进行清理
if [[ ${LOG_AGE} -gt ${LOG_SAVE_TIME} ]];
then
echo "清理容器 ${container} 的日志文件 ${LOG_PATH}"
cat /dev/null > ${LOG_PATH}
fi
fi
done
该脚本会遍历所有Docker容器,对于每个容器,检查其日志路径,如果日志保存时间超过设定的时间,则清空日志文件。在执行此脚本之前,您应该将 $ LOG_SAVE_TIME
设置为您希望保存日志的天数。