如何通过docker stack

时间:2017-06-08 18:00:34

标签: amazon-web-services docker amazon-ec2 docker-swarm

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

docker stack deploy -c myStack.yml myTest

我有两个问题:

  1. 我的第一个问题是我的所有节点都空间不足,因为Docker只使用ec2的根卷。如何指示Docker在EBS卷中创建服务?
  2. 是否可以仅在工作节点中创建服务而不在管理器中创建任何服务?我可以使用swarm管理器来管理节点吗?
  3. 提前致谢

1 个答案:

答案 0 :(得分:1)

让我们从你的第二个问题开始,因为它更容易。

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

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

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

Flocker是一个很大的解决方案。它有更多的支持,更多的选择和更安全。配置起来也很困难。

Blocker是我目前使用的那个。它必须安装在每个节点上,我可以确认它工作正常并且工作正常。语法就像,

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

我希望这足以让您开始研究。