跳至主要內容

08. 日志相关

chanchaw大约 1 分钟devOpsdocker

设置日志大小

概述

docker 默认是不限制日志文件大小的,每个容器都会在目录 /var/lib/docker/containers/<容器id> 下产生名称为<容器id>-json.log 的日志文件,并且容量逐步增大。

限制日志文件大小

编辑文件 /etc/docker/daemon.json 代码如下,第一行设置了镜像,第二行表示日志文件的类型,第三行表示一个容器只能产生两个日志文件,每个日志文件最大200M。

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"log-driver":"json-file",
"log-opts":{"max-size":"200m","max-file":"2"}
}

注意这种方法只对新建的容器有效。

查看容器日志

概述

容器默认不限制日志文件的大小,这样会导致日志文件填满磁盘,那么制作一个批处理文件可以方便的查看每个容器的日志文件的详情

制作

在目录 /usr/local 下创建目录 sh ,然后通过 vi 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

然后赋予权限

# 赋予可执行权限
chmod +x docker_log_size.sh
# 执行批处理
./docker_log_size.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 ========"  

赋予可执行权限并执行

# 赋予可执行权限
chmod +x clean_docker_log.sh
# 执行批处理
./clean_docker_log.sh