最近查看docker日志的时候,使用命令docker log -f 会出现日志无限翻滚的情况,这些日志都是打印到控制台的,但是都被docker收集了起来,放到了/var/lib/docker/containers/{容器id}/*.log中,一般默认的日志格式是{容器id}-json.log,如果日志大小不加限制,很可能日志会无限增长最终撑爆磁盘。
首先先用命令查看下日志大小情况
find /var/lib/docker/containers -name '*.log' -exec ls -lh {} \;
可以看到,日志文件都不大。。咳咳
限制日志文件的大小方式有挺多种
一、治标:清空日志文件
使用以下命令直接情况日志文件
#!/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 ========"
二、治本:设置Docker容器日志大小
1.设置docker运行时日志上限
nginx:
image: nginx:1.12.1
restart: always
logging:
driver: "json-file"
options:
max-size: "5g"
重启docker服务后生效
2.全局设置
修改/etc/docker/daemon.json 文件,添加log-dirver和log-opts参数
{
"registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
daemon.json配置文件的详细配置文档链接:https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
这个则需要重启docker后生效
service docker restart
三、参考文档