我知道码头服务日志从作为该服务一部分的容器中获取日志。但它会怎么样呢?它是取一次并缓存某个地方,还是每次发出命令"docker服务日志“时,它都会通过网络获取日志?
发布于 2018-04-24 09:04:43
正如我的注释和另一个答案所提到的,停靠引擎总是缓存在该停靠引擎上运行的容器的日志,并将它们存储在/var/lib/docker/containers/<container id>/<container id>-json.log目录中。当您在没有运行所述服务的容器的机器上执行docker service logs时,停靠者总是通过网络从机器上提取日志,并且从不缓存。
尽管如此,您所面临的received message length 1869051448 exceeding the max size 4194304错误是因为可能有一个日志行太长,无法适应通过网络发送的gRPC对象。
解决方案
--tail <n>选项指定为docker service logs,其中n是您希望看到的日志末尾的行数。docker service ps指定一个任务ID,而不是服务名称,给出来自该任务的日志,而不是跨服务副本的聚合日志。如果拉出的日志中仍然有那么长的日志行,这可能仍然会给您带来错误。
https://stackoverflow.com/questions/49995323
复制相似问题