You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将journald作为Docker日志驱动是否需要日志轮转?如何操作?

使用journald作为Docker日志驱动:日志轮转配置指南

绝对需要配置journald的日志轮转!默认情况下journald虽然有基础的空间管理规则,但如果你的Docker容器产生大量日志,很容易耗尽宿主机存储空间——我见过不少因为没重视这个导致磁盘告警的案例。下面一步步教你怎么配置:

一、修改journald核心配置

journald的主配置文件是/etc/systemd/journald.conf,编辑这个文件,调整以下关键参数(去掉参数前的#注释,设置符合你宿主机情况的值):

  • SystemMaxUse=10G:限制journald总共能使用的最大磁盘空间,根据宿主机磁盘大小调整,比如小机器设5G也可行
  • SystemKeepFree=5G:强制保留的空闲磁盘空间,当剩余空间低于这个值时,journald会自动删除旧日志
  • SystemMaxFileSize=1G:单个日志文件的最大尺寸,避免出现超大日志文件难以处理
  • MaxRetentionSec=1month:日志最长保留时间,超过这个时间的日志会被自动清理,可选值比如1week、3months等

示例配置片段:

[Journal]
Storage=persistent
SystemMaxUse=10G
SystemKeepFree=5G
SystemMaxFileSize=1G
MaxRetentionSec=1month

二、重启journald让配置生效

修改完配置后,重启服务使设置生效:

systemctl restart systemd-journald

三、手动清理旧日志(可选)

如果当前已经有大量旧日志占用空间,可以手动触发清理:

  • 按空间清理:journalctl --vacuum-size=5G(只保留5G以内的日志)
  • 按时间清理:journalctl --vacuum-time=1week(只保留最近一周的日志)

四、Docker侧的配套配置

确保Docker正确使用journald作为日志驱动,编辑/etc/docker/daemon.json(如果没有这个文件就新建):

{
  "log-driver": "journald",
  "log-opts": {
    "tag": "{{.Name}}/{{.ID}}"
  }
}

这个tag配置会让容器日志带上容器名称和ID,方便后续用journalctl过滤查看,比如:

journalctl CONTAINER_NAME=my-app-container

配置完Docker后记得重启服务:

systemctl restart docker

额外小贴士

  • 用journalctl --disk-usage可以查看当前journald日志占用的空间
  • 如果是测试环境不需要持久化日志,可以把Storage=volatile,这样日志只存在内存里,重启就消失,但生产环境不建议这么做

内容的提问来源于stack exchange,提问作者Yao Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:54:37