问题描述

  今天有同事运行了一个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. CSS盒模型总结(一)

     一.基本概念 盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版,盒模型的组成:content padding border margin 二.盒模型的分类 盒子模型有两种,分别是 ie ...

  2. PWA介绍

    https://codelabs.developers.google.com/codelabs/your-first-pwapp/#0 PWA是一些技术的集合.用于消除web与其他客户端之间的差距,最 ...

  3. Python9-列表-day4

    列表list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = [‘a ...

  4. ACM Changchun 2015 A. Too Rich

    You are a rich person, and you think your wallet is too heavy and full now. So you want to give me s ...

  5. slave_net_timeout 问题一则

    [背景]   对一套数据库集群进行5.5升级到5.6之后,alter.log 报warning异常. 2015-02-03 15:44:51 19633 [Warning] Storing MySQL ...

  6. TOJ 4244: Sum

    4244: Sum   Time Limit(Common/Java):3000MS/9000MS     Memory Limit:65536KByteTotal Submit: 63       ...

  7. 刷题总结——spoj1812(后缀自动机+DP)

    题目: A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is t ...

  8. spring之注入类型

    spring有三种注入类型: set注入: 构造注入: 接口注入: 一.set注入(引用spring官方文档中的例子)(用的最多) 1.首先在代码中我们需要编写成员变量的set方法,如下所示,一般情况 ...

  9. 巴厘岛的雕塑 BZOJ 4069

    巴厘岛的雕塑 题解: 题意是要求分组使每组的和按位取或的值最小 那么考虑贪心,尽量使高位为0 于是枚举位置,从最高位枚举 假设当前枚举到第l位. 令 f[i][j] 表示前 i 个数分成 j 组,满足 ...

  10. 转 DOS 8.3 文件名命名规则

    http://www.360doc.com/content/10/0813/14/73007_45757514.shtml DOS 8.3 文件名命名规则 经常看到命令行或者其它软件在显示目录的时候出 ...