我知道docker服务日志从容器中获取日志,这些容器是该服务的一部分。但它将如何获取?它是一次获取并缓存在某个地方或每次我发出命令" docker service logs"它会通过网络获取日志吗?
答案 0 :(得分:1)
正如我的评论和其他答案所述,docker引擎始终缓存在该docker引擎上运行的容器的日志,并将它们存储在/var/lib/docker/containers/<container id>/<container id>-json.log
目录中。当您从未运行所述服务的容器的计算机执行docker service logs
时,docker始终通过网络从计算机中提取日志,并且它永远不会缓存。
话虽如此,您所面临的错误received message length 1869051448 exceeding the max size 4194304
是因为可能有一条日志行太长而无法适应通过网络发送的gRPC对象。
--tail <n>
指定docker service logs
选项,其中n
是您要查看的日志末尾的行数docker service ps
而不是服务名称指定任务ID,仅为您提供该任务的日志,而不是来自服务副本的聚合日志。 如果拉出的日志中仍有那么长的日志行,这可能仍然会给你错误。
答案 1 :(得分:0)
默认情况下,泊坞窗日志为:
/var/lib/docker/containers/<container id>/<container id>-json.log
这个问题是already answered。
对于某些高级日志记录选项,请参阅logging drivers。