zoukankan      html  css  js  c++  java
  • docker日志输出文件大小设置以及文件个数限制

    问题描述

      今天有同事运行了一个docker容器,不多时就导致宿主机硬盘直接撑爆,消耗了120G,发生的很是突然。

    问题排查

      后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输出会记录到docker日志中,日志默认位置在 /var/lib/docker/containers/containeid 目录下面的 containeid-json.log 文件中。执行命令 du -sh *,可以看大 log 文件非常大。

    问题避免

      问题源头已经知道了,那么我们如何避免这种情况再发生了,首先我们不能禁止日志输出,那么我们是否可以限制文件的大小呢?

    具体操作

      重启容器:

        docker run增加如下参数,限制生成的json.log单个文件大小和保留文件个数:--log-opt max-size=100m --log-opt max-file=3

      词语解释:

        max-size 指定日志文件大小上限

        max-file   指定日志文件个数

    最终的效果就是,日志会持续生成 3 文件,并一直保留最新的 3 个日志文件。

    如下所示:

    [root@etcd1 27cccf6078bc114e0af28b8b89927c5768656ffd8764755ec79f9bb322d5ae74]# ll
    total 38272
    -r--------. 1 root root  8916074 Mar 30 18:17 27cccf6078bc114e0af28b8b89927c5768656ffd8764755ec79f9bb322d5ae74-json.log
    -r--------. 1 root root 10000056 Mar 30 18:17 27cccf6078bc114e0af28b8b89927c5768656ffd8764755ec79f9bb322d5ae74-json.log.1
    -r--------. 1 root root 10000001 Mar 30 18:17 27cccf6078bc114e0af28b8b89927c5768656ffd8764755ec79f9bb322d5ae74-json.log.2
    

    注意点:  --log-opt max-size=1m --log-opt max-file=3 应该放在 docker run  后面,不可以放在镜像后面执行,这样子会不生效。

    PS.内容永远保持 max-file 的最新数据

  • 相关阅读:
    聚焦WCF行为的扩展
    软件设计经典书籍推荐
    善变者常新
    开发WCF/Silverlight须知
    面向对象设计讲义
    站立会议变形记
    敏捷开发思想之拥抱变化
    WCF 4.0中的WSDiscovery
    QCon日记
    创投“黑帮”,必须的
  • 原文地址:https://www.cnblogs.com/cxbhakim/p/8677928.html
Copyright © 2011-2022 走看看