如何在Docker Swarm模式下记录容器

13

在Docker Swarm模式下,有没有一种方法可以记录使用docker service create命令创建的容器?


1
如果你正在寻找类似于 docker-compose logs 的日志聚合功能,那么在 Docker Swarm 模式下它还没有被实现。如果你需要日志,你所能做的(据我所知)就是找出哪个节点托管了你的容器,并直接使用 docker logs <container id> 命令。 - ronkot
你的意思是:在Docker Swarm模式下,是否有任何方法可以跟踪与服务和相关任务的生命周期相关的事件? - andov
2个回答

17

终于在docker 17.03中实现了该功能。您可以通过以下命令获取在不同/多个节点上运行的服务的日志:

最后,在Docker 17.03中实现了这个功能。你可以使用这个命令获取运行在不同/多个节点上的服务的日志:

docker service logs -f {NAME_OF_THE_SERVICE}

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

docker service ls

请注意,这是一个实验性功能(不适用于生产环境),为了使用它,您必须启用实验模式:

更新:docker logs service现在是docker >= 17.06的标准功能。 https://docs.docker.com/engine/reference/commandline/service_logs/


5

该功能尚未实现。正如@ronkot所说,您需要确定哪个节点正在运行您的服务实例,然后直接连接到该节点。

即使该功能将来可能会被实现,我强烈建议您开始使用Docker日志驱动程序,以便集中所有集群日志。以下是更多信息:https://docs.docker.com/engine/admin/logging/overview/

例如,如果您想使用类似Logstash + Kibana的东西,则gelf驱动程序是完美的 :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接