配置的日志记录驱动程序不支持读取:Docker

Posted

技术标签:

【中文标题】配置的日志记录驱动程序不支持读取:Docker【英文标题】:configured logging driver does not support reading : Docker 【发布时间】:2019-02-18 22:22:38 【问题描述】:

我正在 AWS ECS 中运行我的 docker 容器。当我尝试执行以下命令从容器中读取日志时,我遇到了以下错误。

命令:docker logs -f "容器ID"

来自守护程序的错误响应:配置的日志记录驱动程序不支持读取。

欢迎任何可行的解决方案。

【问题讨论】:

你能分享“docker info”和“docker inspect 的输出吗? 你的容器/守护进程/代理是configured to use the awslogs log driver吗? 你指定了你的 docker 日志驱动程序吗?我认为这就是问题所在。您可以在问题中分享您上面的 Docker 配置。 您好,此容器由 AWS Batch 管理。我可以在 AWS Cloudwatch 中看到日志。但是如果我登录到容器实例并执行 "docker logs -f "Container ID"" ,那么我将面临上述错误。 【参考方案1】:

根据 David Maze 评论的信息,您的容器必须使用 awslogs 日志驱动程序运行。

这里是setting introduction.

将日志驱动程序更改为json-file, 后,您可以通过执行docker logs container-id/name 来获取日志。

但还是要注意这一点:

如果使用 Fargate 启动类型,则唯一支持的值是 awslogs。

【讨论】:

【参考方案2】:

您正在使用awslogs 日志驱动程序,而docker logs 命令不适用于该驱动程序。

来自文档:

docker logs 命令不适用于除驱动程序以外的驱动程序 json 文件和日志

limitations of logging drivers

【讨论】:

【参考方案3】:

我以前也遇到过同样的问题。

在我的具体情况下,ECS 中该服务的任务定义将日志配置的 logDriver 设置为 fluentd,请参见下图。

为了解决这个问题,我创建了另一个任务定义,除了我将Log Configuration 部分的日志驱动程序保留为默认之外,所有参数都相同。请注意,如果您单击它,您将看到其他日志驱动程序,包括 fluentd

之后我将服务指向我的 ECS 集群中的这个任务定义,现在我可以看到执行命令 docker logs <container id> 的日志

【讨论】:

以上是关于配置的日志记录驱动程序不支持读取:Docker的主要内容,如果未能解决你的问题,请参考以下文章

用于多行的 Docker Fluentd 日志记录驱动程序

通过配置日志驱动程序将 Docker 容器日志发送到 ELK Stack - 简单方法

Graylog处理docker容器的多行日志之过程记录

使用 docker syslog 日志记录驱动程序处理日志文件

Docker 日志最佳实践

docker日志驱动和存储驱动