【问题标题】:Docker Swarm + Docker Compose: running linked containers on different nodes?Docker Swarm + Docker Compose:在不同节点上运行链接容器?
【发布时间】:2016-04-20 01:27:59
【问题描述】:

我目前正在通过 Docker Compose 文件在单个主机上运行一个应用程序。容器通过 RabbitMQ 容器相互通信(因此它们都是链接的)。该应用程序开始需要比我的单个主机能够提供的更多资源,所以我认为 Docker Swarm 将是理想的,因为我应该能够通过相同的 Compose 文件但在分布式节点上启动相同的容器集。

但是,链接容器似乎被限制在同一个节点上,因此在多个节点上设置 Docker Swarm 不会导致我正在寻找的容器分布。

Ambassador Pattern 似乎是分离链接容器的推荐方法(通过为每个节点上的链接容器设置代理),但是我在 docker-compose 文件中使用它时遇到了问题,因为我已经看到显示使用 docker run 设置每个节点,然后使用运行共享服务的节点的 IP(在我的情况下为 RMQ)设置环境变量以告诉客户端的大使容器将链接服务的数据路由到哪里(如 @ 987654321@)。如何将其转换为 Compose 文件,以便我不需要知道服务将在其上运行的 IP(因为 Docker Swarm 将在 Compose 文件完成后决定这一点)?

【问题讨论】:

    标签: docker docker-compose docker-swarm


    【解决方案1】:

    使用链接是deprecated。相反,您可以create a new network 并将所有容器添加到该网络:

    $ docker network create myapp
    

    请注意,根据Networking documentation for Compose,会自动为您的撰写文件创建这样的网络。

    这意味着您根本不需要设置任何链接或网络,因为 Compose 已经自动创建了一个网络,并且该网络中的所有容器都应该可以使用它们的容器名称访问。

    还可以查看Using Compose with Swarm 了解一些限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2019-01-30
      • 2017-03-06
      • 1970-01-01
      • 2018-02-11
      相关资源
      最近更新 更多