Swarm中的Docker任务可以知道哪个实例编号或总实例数是多少?

时间:2017-04-21 19:51:14

标签: docker docker-swarm

Docker Task是否可以知道特定服务运行的任务编号和总任务数?

E.g。我想要一个在作业队列中的不同范围上工作的服务。任何一个Service实例(即Task)工作的作业范围取决于Tasks的总数和当前任务的任务。因此,如果它是20个中的第5个任务,那么它将适用于一系列工作,但如果它是20个中的第12个任务,它将在不同的范围内工作。

我希望有一个DOCKER_SERVICE_TASK_NUMBER环境变量或类似的东西。

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经看过这次请求了几次,所以你并不孤单,但这不是Docker的swarm模式的当前功能。实现这一点并非易事,因为需要支持扩展服务以及对swarm服务的其他更新。如果您缩减服务并且docker清理任务2中的5,因为它位于最繁忙的节点上,那么您将处于奇怪的情况,其中起始计数小于当前计数,并且当前编号方案中存在漏洞。 / p>

如果您有此要求,那么像consul或etcd这样的外部服务发现工具可能会有用。您还可以尝试使用容器内可用的tasks.$service_name DNS条目来实现自己的解决方案。这使得您提供此服务的所有其他容器的IP就像您使用循环负载均衡器一样,然后群集模式VIP将其抽象出来。