最近查看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
三、參考文檔
https://blog.csdn.net/yjk13703623757/article/details/80283729