问题描述

  今天有同事运行了一个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= 应该放在 docker run  后面,不可以放在镜像后面执行,这样子会不生效。

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

docker日志输出文件大小设置以及文件个数限制的更多相关文章

  1. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  2. Shell 从日志文件中选择时间段内的日志输出到另一个文件

    Shell 从日志文件中选择时间段内的日志输出到另一个文件 情况是这样的,某系统的日志全部写在一个日志文件内,所以这个文件非常大,非常长,每次查阅的时候非常的不方便.所以,相关人员希望能够查询某个时间 ...

  3. Log4j将不同Package的日志输出到不同的文件的方法

    随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程 ...

  4. log4j学习(二)不同类的日志输出到不同的文件

    目的:一个应用中有两个不同作用的后台服务,我们需要把他们的日志分开,存放到2个不同的日志文件中. 办法:需要在log4j.properties文件中配置两个不同的logger和对应的appender ...

  5. Log4j将不同Package的日志输出到不同的文件

    转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就 ...

  6. log4j将日志输出到控制台,文件,邮件

    #将日志写到文件 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=e\:\ ...

  7. log4j2配置按照日志级别将日志输出到不同的文件

    背景 在项目中,可能会产生非常多的日志记录,为了方便日志分析,可以将日志按级别输出到指定文件. log4j2.xml配置文件 <!--将info级别的日志单独输出到info.log中--> ...

  8. docker 日志清理与设置

    清空 cat /dev/null >json.log docker-compose nginx: image: nginx:1.12.1 restart: always logging: dri ...

  9. spark脚本日志输出级别设置

    import org.apache.log4j.{ Level, Logger } Logger.getLogger("org").setLevel(Level.WARN) Log ...

随机推荐

  1. 漫谈使用Kafka作为MQ中间件

    哪些场景适合使用Kafka线上系统会实时产生数以万计的日志信息,服务器运行状态,用户行为记录,业务消息 等信息,这些信息需要用于多个不同的目的,比如审计.安全.数据挖掘等,因此需要以分类的方式将这些信 ...

  2. CSS 布局经典问题初步整理

    CSS 定位问题 主要就是经典的绝对定位,相对定位问题. 10个文档学布局:通过十个例子讲解布局,主要涉及相对布局,绝对布局,浮动. 百度前端学院笔记 – 理解绝对定位:文章本身一般,几篇参考文献比较 ...

  3. Linux 特殊权限位简介

    suid.guid suid 针对二进制命令或者程序,让其拥有root或者属主权限执行 一.setsuid : chmod 4755 二进制命令或者程序 chmod u+s   二进制命令或者程序 示 ...

  4. 数据结构( Pyhon 语言描述 ) — —第11章:集和字典

    使用集 集是没有特定顺序的项的一个集合,集中的项中唯一的 集上可以执行的操作 返回集中项的数目 测试集是否为空 向集中添加一项 从集中删除一项 测试给定的项是否在集中 获取两个集的并集 获取两个集的交 ...

  5. 我的Python分析成长之路3

    一 集合                                                                                                 ...

  6. C#显示及隐藏任务栏

    private const int SW_HIDE = 0; //隐藏任务栏 private const int SW_RESTORE = 9;//显示任务栏 [DllImport("use ...

  7. 初识LiveScript

        The LiveScript Book 邂逅 LiveScript 就像很多现代化的语言一样,LiveScript 使用缩进来表示语句块,使用换行取代分号来表示一个语句的结束 (如果你想要一行 ...

  8. Android单个按钮自定义Dialog

    代码改变世界 Android单个按钮自定义Dialog dialog_layout.xml <?xml version="1.0" encoding="utf-8& ...

  9. You need to install the perl-doc package to use this program

    You need to install the perl-doc package to use this program 解决方案:apt-get install perl-doc

  10. 单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题

    单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题 今天遇到一个问题,在主站点现在配置的应用和主站点登录会话状态不能共享,进入子站点应用 ...