【问题标题】:how to make ebs volume usable by docker stack如何使 ebs 卷可供 docker stack 使用
【发布时间】:2017-06-09 08:39:23
【问题描述】:

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

docker stack deploy -c myStack.yml myTest

我有两个问题:

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

提前致谢

【问题讨论】:

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


    【解决方案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 ....
    

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

    【讨论】:

    • 我有一个问题,目前我正在为 docker swarm 使用 ebs(这是 ec2 的根卷),但是每当我在再次启动管理器和两个工作节点后关闭它们时,我都会看到服务,但它们将无法通过 ssh 访问,并且它们会丢失配置。这就是你说我需要坚持的原因吗?并且需要使用 Flocker 或 Blocker?
    • 我看到了你的问题。它与数据持久性无关。 Swarm 管理器不是为此而设计的。您可能会遇到错误。也许创建一个最小测试用例并将其提交到 GitHub 问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多