有没有办法在Docker Swarm中获取日志?

我想看看我的Docker Swarm服务中的日志。 不仅因为我希望我所有的日志都是按照通常的原因收集的,而且还因为我想弄清楚为什么服务崩溃的原因是"task: non-zero exit (1)"

我看到在pipe道中实施docker logs是有工作的,但有没有办法访问生产服务的日志? 或者是Docker Swarm没有准备好生产和logging?

我们所做的成功就是利用GrayLog 。 如果您查看docker run文档,您可以指定一个日志驱动程序和日志选项,允许您将所有控制台消息发送到一个graylog群集。

 docker run... --log-driver=gelf --log-opt gelf-address=udp://your.gelf.ip.address:port --log-opt tag="YourIdentifier" 

你也可以在docker守护进程的全局级别进行技术上的configuration,但是我build议不要这样做。 它不会让你添加“标记”选项,这对筛选结果非常有用。

Docker服务定义也支持日志驱动和日志选项,所以你可以使用docker服务更新来调整你的服务而不会破坏它们。

使用Docker Swarm 17.03,您现在可以通过命令行访问多实例服务的日志。

 docker service logs -f {NAME_OF_THE_SERVICE} 

您可以通过以下方式获取服务的名称:

 docker service ls 

请注意,这是一个实验function (不是生产就绪),为了使用它,您必须启用实验模式:

更新: docker日志服务现在是docker> = 17.06的标准function。 https://docs.docker.com/engine/reference/commandline/service_logs/#parent-command

类似的问题: 如何在docker群模式下logging容器