【docker】docker导致系统磁盘满了,如何限制日志文件大小

问题发生场景

一次压测过程中突然磁盘满了,导致redis持久化失败报错,服务器宕机了

排查原因,是由于docker文件太大了,达到了19G

 

然后找资料,解决方案如下:

 

一、docker日志文件的方法

除了

docker logs -f 容器ID/容器名

这个方法以外。

 

在linux上,一般docker的日志文件存储在/var/lib/docker/containers/container_id/ 目录下的 各个容器ID对应的目录下的*-json.log 文件中

方法1:可以直接进入该目录下,查找日志文件

方法2:可以写一个脚本文件,执行即可

  1》创建.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

 

  2》为该文件设置权限

chmod +x docker_log_size.sh

  3》执行该文件

./docker_log_size.sh

 

 

 

二.设置Docker容器日志文件大小限制

1.新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:

# vim /etc/docker/daemon.json

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

max-size=500m,意味着一个容器日志大小上限是500M, 
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。

 

2.然后重启docker的守护线程

命令如下:

systemctl daemon-reload
systemctl restart docker

 

【需要注意的是:设置的日志大小规则,只对新建的容器有效】