是否可以为同一个容器使用多个日志记录驱动程序 - 比如fluentd和json?
谢谢。
答案 0 :(得分:9)
从18.03版开始,Docker Engine Enterprise(EE)支持多个日志驱动程序,但它不在Community Edition(CE)中:
https://docs.docker.com/ee/engine/release-notes/#18031-ee-1-2018-06-27
答案 1 :(得分:4)
不,您只能指定一个日志记录驱动程序/容器。
要为日志提供单独的接收器,您必须依靠流畅的接收日志(或读取json日志文件)并配置管道来分发它们。
答案 2 :(得分:1)
自版本 20.10.1
起,Docker CE 中提供双重日志记录。
该功能以前仅在 Docker Enterprise 版本中可用,因为版本 18.03.1-ee-1
。
官方文档章节“Dual Logging”没有反映这一点(截至 2021-01-04)。
该功能已在拉取请求 #40543 中开源,并于 2020 年 2 月 27 日合并到 master
。
moby/moby
中的相关 GitHub 问题 #17910 已关闭,评论如下:
即将发布的 Docker 20.10 版本将带有上述功能(“双日志记录”),它使用本地日志记录驱动程序作为环形缓冲区,这使得 docker 日志在使用没有“读取”功能的日志记录驱动程序时工作" 支持(例如,将日志发送到远程日志聚合器的日志驱动程序)。
答案 3 :(得分:0)
否,您不能指定the official documentation中所述的单个日志记录驱动程序:
您不能指定多个日志驱动程序。
日志驱动程序文档也表明:
要将Docker守护程序配置为默认为特定日志记录 驱动程序,将log-driver的值设置为日志记录驱动程序的名称 在daemon.json文件中...`
{
"log-driver": "syslog"
}
您会看到"log-driver"
需要一个字符串而不是一个数组。
事实上,自Docker Engine Enterprise 18.03.1-ee-1起,Docker就“启用”了双重日志记录功能,该功能允许配置任何日志记录驱动程序日志,同时仍然可以使用docker logs
进行读取。
例如,在该功能之前,请在daemon.json中指定该驱动程序:
{
"log-driver": "syslog"
}
允许将日志重定向到syslog服务器,但这也使Docker不再将任何日志发布到本地日志驱动程序。
现在情况并非如此,该信息在两个目的地均可用。
从Docker Engine Enterprise 18.03.1-ee-1开始,您可以使用 docker日志读取容器日志,无论配置如何 记录驱动程序或插件。此功能,有时称为 双重日志记录,允许您使用docker日志读取容器日志 本地格式一致,无论远程日志驱动程序如何 之所以使用,是因为引擎已配置为将信息记录到 “本地”日志记录驱动程序。