Docker 日志缺少 docker attachment 中显示的日志条目

Docker 日志缺少 docker attachment 中显示的日志条目

我正在开发一个在 Docker 容器内运行的软件,其中生成的日志是必需的,以便以后对其进行评估。

我的问题是该命令docker logs缺少一些由我的软件明确记录的日志条目。我可以通过使用附加到容器来验证它是否记录了消息docker attach

基本上docker attach实时显示所有条目,但docker logs只记录其中的一些条目,没有任何可识别的模式。所有日志都由软件写入标准输出。

编辑: 我也意识到其他 Docker 容器也有这种行为。

答案1

我发现了这个问题。我们的 docker 守护进程配置为使用 journald 作为其默认日志记录驱动程序。由于我们有不同的容器记录大量安静日志,我们达到了默认的 journald 速率限制,因此一些日志会丢失。

这个问题有两种解决方案:

1.解决方案

增加 journald 的速率限制。为此,请使用 /etc/systemd/journald.conf 配置文件并添加/修改以下行:

RateLimitInterval=30s
RateLimitBurst=1000

之后只需重新启动 journald:systemctl restart systemd-journald

有关此内容的更多信息,请查看:这里手册页

2.解决方案

您可以使用参数为给定容器指定不同的日志记录驱动程序--log-driver json-file

有关 docker 日志驱动程序的更多信息

附加信息:

有用的链接来识别常见的 docker 日志问题

相关内容