繁体   English   中英

Docker Swarm + Docker Compose:在不同节点上运行链接的容器吗?

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

我有一个应用程序,目前正在通过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文件完成后决定这一点)?

不推荐使用链接。 相反,您可以创建一个新网络并将所有容器添加到该网络:

$ docker network create myapp

请注意,根据Compose网络文档,将为您的撰写文件自动创建这样的网络。

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

还可以查看“ 使用Swarm合成 ”的一些限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM