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

时间:2016-04-20 01:28:00

标签: docker docker-compose docker-swarm

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

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

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

1 个答案:

答案 0 :(得分:5)

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

$ docker network create myapp

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

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

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