Docker Swarm约束将多个容器保持在一起?

问题描述 投票:0回答:1

我有三个容器需要在同一个Swarm节点/主机上运行才能访问相同的数据卷。我不关心他们被委派给哪个主机 - 因为它在Elastic AWS实例上运行,它们会在我不知情的情况下上下起伏。

这最后的事实使它变得棘手,即使它看起来应该相当普遍。是否有允许这样的放置约束?显然node.id或node.hostname是out,因为它们不是常量。我想到了标签 - 这会起作用,但后来我不知道如何让“替代”AWS实例自动获得标签。

docker docker-swarm
1个回答
0
投票

Swarm没有将容器放在同一主机上的功能(根据您的要求不使用ID或主机名)。在Kubernetes中被称为“Pods”。 Docker Swarm采用更加分散的方法。您可以尝试在新实例启动时破解标签分配,但这并不理想。

在Swarm中,今天解决这个问题的方法是使用不同的卷驱动程序插件,然后使用内置的“本地”驱动程序。 Here's a list of certified ones。 Swarm中的关键是不在节点上使用卷的本地存储。无论如何,当节点终止时,这些卷都会丢失,因此Swarm最好将卷移动到共享存储。

在AWS中我建议您尝试将EFS作为共享存储,如果您需要多个容器一次访问它,并使用Docker的CloudStor驱动程序(随附Docker for AWS template)或REX-Ray storage orchestrator解决方案来确保共享数据路径(NFS,EFS,S3,等)连接到正确的节点以获得正确的服务任务。

© www.soinside.com 2019 - 2024. All rights reserved.