docker run 时加了 max-size=10m,一周后 docker inspect 显示日志文件 8.2G,磁盘告警。乍看像缓存或者权限的锅,追下去往往不是。
logging:
driver: json-file
options:
max-size: "50m"
max-file: "5"
追下去是这么回事:容器是用 compose 起的,日志选项写在 Dockerfile 里,compose 文件覆盖了 daemon 默认值。max-file 没配,单文件上限生效但历史文件不清理。
「容器日志轮转」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,在 compose 的 logging 段显式写 driver 和 options;同时配 max-size 和 max-file;daemon.json 里设全局默认 防止新容器漏配;重建容器后确认配置真的生效。
验收就看一点,docker inspect 的日志目录下单文件不超过 50M 总量不超过 250M。
