Docker Task是否可以知道特定服务运行的任务编号和总任务数?
E.g。我想要一个在作业队列中的不同范围上工作的服务。任何一个Service实例(即Task)工作的作业范围取决于Tasks的总数和当前任务的任务。因此,如果它是20个中的第5个任务,那么它将适用于一系列工作,但如果它是20个中的第12个任务,它将在不同的范围内工作。
我希望有一个DOCKER_SERVICE_TASK_NUMBER环境变量或类似的东西。
谢谢!
答案 0 :(得分:0)
我已经看过这次请求了几次,所以你并不孤单,但这不是Docker的swarm模式的当前功能。实现这一点并非易事,因为需要支持扩展服务以及对swarm服务的其他更新。如果您缩减服务并且docker清理任务2中的5,因为它位于最繁忙的节点上,那么您将处于奇怪的情况,其中起始计数小于当前计数,并且当前编号方案中存在漏洞。 / p>
如果您有此要求,那么像consul或etcd这样的外部服务发现工具可能会有用。您还可以尝试使用容器内可用的tasks.$service_name
DNS条目来实现自己的解决方案。这使得您提供此服务的所有其他容器的IP就像您使用循环负载均衡器一样,然后群集模式VIP将其抽象出来。