Linux下清理docker的大量的日志的脚本

2024-09-16 268点热度 0人点赞 0条评论

一台小服务器上安装了docker,跑了几个container,没过一阵子发现磁盘空间不够了,查了一下,主要是docker安装了gitlab-ce,这个容器产生的日志特别多,一天能有几百MB,在这个文件夹下:

/var/lib/docker/containers/7daa91c2495dec29ebac0ba77d1b4bf9e665e20f10f504ed02dbfaea94c3d7b5/7daa91c2495dec29ebac0ba77d1b4bf9e665e20f10f504ed02dbfaea94c3d7b5-json.log

虽然按照官方的docker的文件,配置了日志最大文件大小和数量(/etc/docker/daemon.json):

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

但是好像没有效果,索性写了一个定时脚本,扫描/var/lib/docker/containers下所有的日志文件,当日志文件达到一定的大小(100MB),就清空日志文件。

文件放在:/opt/docker_log_cleanup.sh

内容如下(注释说明也写着):

#!/bin/bash

# 设置日志文件的最大大小(以字节为单位)
# 当前设置为100MB,您可以根据需要调整
MAX_SIZE=$((100 * 1024 * 1024))

# 查找所有的Docker日志文件并处理
find /var/lib/docker/containers/ -name '*-json.log' | while read -r log_file; do
    # 获取文件大小
    file_size=$(stat -c %s "$log_file")
    
    if [ "$file_size" -gt "$MAX_SIZE" ]; then
        echo "清理日志文件: $log_file"
        # 清空文件内容,但保留文件
        truncate -s 0 "$log_file"
    fi
done

echo "日志清理完成"

给脚本增加权限:

chmod +x /opt/docker_log_cleanup.sh

编辑定时任务:

crontab -e

内容如下(每天凌晨2点执行):

0 2 * * * /opt/docker_log_cleanup.sh

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论