• Docker容器日志打满机器的解决方式


    Docker容器日志打满机器的解决方式

     

    在我们使用Docker容器启动服务时,常常会由于容器内的日志过多导致把宿主机的磁盘打满。

    本文主要讲解如何解决容器日志打满磁盘的问题。

    容器日志目录

    首先,我们来讲一下容器日志的位置。如果你的磁盘已经被容器日志所打满,则需要找到对应的日志并进行删除。

    默认情况下,每个容器的日志默认都会以json-file的格式存储于 /var/lib/docker/containers/<容器id>/<容器id>-json.log文件中。

    如果你的磁盘已经被日志打满,此时可以清除该文件来释放空间。需要注意的是,不建议直接使用rm命令删除日志文件,因为在某些情况下,rm命令无法直接释放磁盘空间。

    一种推荐的删除方式如下:

    1. echo " ">/var/lib/docker/containers/<容器id>/<容器id>-json.log

    docker配置文件中配置日志信息

    上述方法总是治标不治本。为了解决该问题,我们希望能直接限制容器日志的大小。

    限制容器日志的方式分为全局限制和单个容器限制。我们首先来说明如下进行全局限制。

    创建/修改/etc/docker/daemon.json该文件,在该文件中增加如下配置:

    1. {
    2. "log-driver":"json-file",
    3. "log-opts":{"max-size":"1g","max-file":"1"}
    4. }

    此时,表示全局限制所有容器的默认日志配置为json-file格式且最大限制为1G。

    docker容器启动命令中配置日志信息

    有时,我们希望仅仅针对单个容器进行限制,那么此时方式如下:
    docker run的容器启动命令中添加如下参数:

    1. --log-opt max-size=1g--log-opt max-file=1

    compose文件中配置日志信息

    很多时候,我们启动容器不是通过docker run进行挨个启动,而是通过compose进行统一的管理。
    此时,我们同样可以在compose的配置文件中进行容器日志的限制。

    一个示例如下:

    1. version:"2"
    2. services:
    3. mysql:
    4. image: mysql
    5. logging:
    6. driver:"json-file"
    7. options:
    8. max-size:"1g"
  • 相关阅读:
    生成格雷码 转自leetcode
    webstorm注册码 永久有效!!!(亲测有效)
    Myeclipse或者eclipse太卡
    对封装的再次理解(容器)
    几个好的参考的网站
    将json字符串转为json对象,从对象中取需要的数据
    ElementUI学习笔记
    Oracle的case when 和decode
    20190807更新数据相关笔记
    oracle未查找到任何数据问题
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/14874110.html
Copyright © 2020-2023  润新知