• Docker 日志自动轮转和清理配置


    设置 Docker 日志大小和自动删除旧日志:通过配置 Docker 使用 json-file 日志驱动,同时使用 logrotate 工具,可以设置日志的最大大小(例如100MB),并在达到该大小时自动删除旧日志。这可帮助管理 Docker 日志文件大小和保持存储空间整洁。


    步骤 1:配置 Docker 日志驱动

    在 Docker 的配置文件中,通常是 /etc/docker/daemon.json,可以指定使用 json-file 日志驱动并设置日志的最大大小。编辑配置文件并添加以下内容:

    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "10"
      }
    }
    
    • max-size:指定日志文件的最大大小,这里设置为 100MB。
    • max-file:指定保留的旧日志文件数,这里设置为 10。

    保存配置文件并重新启动 Docker 服务以应用更改:

    sudo systemctl daemon-reload && systemctl restart  docker
    

    步骤 2:安装和配置 logrotate

    现在,需要安装和配置 logrotate 工具,以定期轮转 Docker 日志文件。在大多数 Linux 发行版中,logrotate 工具已经安装。可以使用以下命令来编辑 logrotate 配置文件:

    sudo nano /etc/logrotate.conf
    

    在配置文件中,可以添加一个新的日志轮转配置,以定期清理 Docker 日志文件:

    /var/lib/docker/containers/*/*.log {
        missingok
        weekly
        rotate 10
        size 100M
        compress
        delaycompress
        notifempty
        copytruncate
    }
    
    • /var/lib/docker/containers/*/*.log:这是 Docker 日志文件的默认存储位置。确保路径与的系统中的实际路径匹配。
    • weekly:日志轮转周期,这里设置为每周。
    • rotate 10:保留的旧日志文件数,与 Docker 日志驱动配置的 max-file 一致。
    • size 100M:日志文件大小达到 100MB 时触发轮转。
    • compress:启用压缩旧日志。
    • delaycompress:在压缩之前保留一个未压缩的副本。
    • notifempty:仅在日志文件非空时轮转。
    • copytruncate:使用 copytruncate 选项避免中断正在写入的日志文件。

    保存配置文件并测试 logrotate:

    sudo logrotate -d /etc/logrotate.conf
    

    这将模拟日志轮转并显示轮转操作的详细信息。如果一切正常,可以将其设置为定期自动运行:

    sudo logrotate -f /etc/logrotate.conf
    

    现在,Docker 日志将根据配置定期轮转,并在达到指定的最大大小时删除旧日志。

    步骤 3:编辑 Cron 作业

    打开 cron 配置文件以编辑 Cron 作业。通常,Cron 作业的配置文件位于 /etc/crontab 或 /etc/cron.d 目录中。
    添加一个新的 Cron 作业,以定期运行 logrotate 。以下是一个示例 Cron 作业:

    0 0 * * * root /usr/sbin/logrotate -f /etc/logrotate.conf
    

    这个 Cron 作业的含义是在每天午夜(00:00)执行 logrotate。可以根据需要调整时间表。/usr/sbin/logrotate -f /etc/logrotate.conf 是运行 logrotate 的命令。

    保存配置文件。

    步骤 4:重启 Cron 服务

    如果使用的是 systemd,可以使用以下命令重启 Cron 服务:

    sudo systemctl restart cron
    

    如果使用的是 SysV init 系统,可以使用以下命令:

    sudo service cron restart
    

    步骤 5:验证 Cron 作业

    可以使用以下命令列出当前配置的 Cron 作业:

    crontab -l
    

    这将显示所有用户的 Cron 作业,包括新添加的 logrotate 作业。

    现在,logrotate 将根据在 Cron 作业中设置的时间表定期运行,执行日志轮转操作,以确保日志文件的定期清理和管理。


    __EOF__

  • 本文作者: 阴阳怪气
  • 本文链接: https://www.cnblogs.com/yuwen01/p/17756977.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【MySQL】数据库进阶之触发器内容详解
    基于S32K144驱动NSD8308
    VD6283TX环境光传感器驱动开发(1)----获取ID
    【工程数学】笔记1:复变函数和积分变换
    SpringBoot整合RabbitMQ实现六种工作模式
    2024年java面试--mysql(3)
    ant-design-vue 修改a-button disabled默认样式
    mongodb简介、安装、搭建复制集以及切片
    如何有效保证Java代码单元测试覆盖率
    超级简单的SSM框架(全注解,源码+分析,看一眼就会)
  • 原文地址:https://www.cnblogs.com/yuwen01/p/17756977.html