如何使docker栈可用的ebs卷

我正在AWS中使用ansible和Docker(在Swarm中运行)构build一个多层env。 我有一个主节点和2个工作节点。 我正在使用以下命令使用Docker堆栈在群集中创build服务:

docker stack deploy -c myStack.yml myTest 

我有两个问题:

  1. 我的第一个问题是我的所有节点都空间不足,因为Docker只使用ec2的根卷。 我如何指示Docker在EBS卷中创build服务?
  2. 是否有可能只在工人节点创build服务,而不是在pipe理器中创build任何服务? 我可以使用swarmpipe理器来pipe理节点吗?

提前致谢

让我们从第二个问题开始,因为它比较容易。

您可以将标签添加到节点,然后在创build服务时使用约束(堆栈是相同的)。 例如

 docker node update --label-add "role=worker" .... # on all your worker nodes docker service create --constraint "node.labels.role==worker" ... 

对于你的第一个问题,你需要持久的数据。 有一些解决scheme。

植绒是一个大的解决scheme。 它有更多的支持,更多的select和更安全。 configuration也很困难。

拦截器是我目前使用的。 它必须安装在每个节点上,并且我可以确认它正在工作并且工作得很好。 语法就像,

 docker service create --mount type=volume,target=/data,source=vol-08a1211f22864700c,volume-driver=blocker .... 

我希望这是足够的信息给你开始你的研究。