gpt4 book ai didi

Docker Swarm + Docker Compose : running linked containers on different nodes?

转载 作者:行者123 更新时间:2023-12-01 23:26:08 25 4
gpt4 key购买 nike

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

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

大使模式似乎是分离链接容器的推荐方法(通过为每个节点上的链接容器设置代理),但是自从我的示例以来,我在 docker-compose 文件中使用它时遇到了问题可以看到显示使用 docker run 设置每个节点,然后使用运行共享服务的节点的 IP(在我的例子中为 RMQ)来设置环境变量,以告诉客户端的大使容器将链接服务的数据路由到何处(如 https://docs.docker.com/engine/admin/ambassador_pattern_linking/ 所示) )。如何将其转换为 Compose 文件,以便我不需要知道服务将在其上运行的 IP(因为 Docker Swarm 将在 Compose 文件完成后决定这一点)?

最佳答案

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

$ docker network create myapp

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

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

另请查看Using Compose with Swarm对于一些限制。

关于Docker Swarm + Docker Compose : running linked containers on different nodes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com