前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 日志自动轮转和清理配置

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

作者头像
2546610233
发布2024-05-08 17:18:04
1050
发布2024-05-08 17:18:04
举报
文章被收录于专栏:误入歧途误入歧途

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

步骤 1:配置 Docker 日志驱动

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

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

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

代码语言:javascript
复制
sudo systemctl daemon-reload && systemctl restart  docker
步骤 2:安装和配置 logrotate

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

代码语言:javascript
复制
sudo nano /etc/logrotate.conf

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

代码语言:javascript
复制
/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:

代码语言:javascript
复制
sudo logrotate -d /etc/logrotate.conf

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

代码语言:javascript
复制
sudo logrotate -f /etc/logrotate.conf

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

步骤 3:编辑 Cron 作业

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

代码语言:javascript
复制
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 服务:

代码语言:javascript
复制
sudo systemctl restart cron

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

代码语言:javascript
复制
sudo service cron restart
步骤 5:验证 Cron 作业

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

代码语言:javascript
复制
crontab -l

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤 1:配置 Docker 日志驱动
  • 步骤 2:安装和配置 logrotate
  • 步骤 3:编辑 Cron 作业
  • 步骤 4:重启 Cron 服务
  • 步骤 5:验证 Cron 作业
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档