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 运行 设置每个节点,然后使用节点的 IP 运行 连接共享服务(在我的例子中是 RMQ)来设置环境变量告诉客户端的大使容器将链接服务的数据路由到哪里(如 https://docs.docker.com/engine/admin/ambassador_pattern_linking/ 中)。如何将其转换为 Compose 文件,这样我就不需要知道服务将 运行ning 所在的 IP(因为 Docker Swarm 将在 Compose 文件完成后决定这一点)?
使用链接 deprecated. Instead, you can create a new network 并将所有容器添加到该网络:
$ docker network create myapp
请注意,根据 Networking documentation for Compose,此类网络会自动为您的撰写文件创建。
这意味着您根本不需要设置任何链接或网络,因为 Compose 已经自动创建了一个网络,并且所有容器都应该可以使用容器名称在该网络中访问。
另请参阅 Using Compose with Swarm 了解一些限制。
我有一个应用程序,我目前正在通过 Docker Compose 文件 运行 在单个主机上运行。这些容器通过 RabbitMQ 容器相互通信(因此它们都是链接在一起的)。该应用程序开始需要比我的单个主机能够提供的资源更多的资源,所以我认为 Docker Swarm 是理想的选择,因为我应该能够通过相同的 Compose 文件启动相同的容器集,但在分布式节点。
但是,链接的容器似乎被限制在同一个节点上,因此在多个节点上设置 Docker Swarm 不会导致我正在寻找的容器分布。
大使模式似乎是分离链接容器的推荐方法(通过在每个节点上为链接容器设置代理),但是我在 docker-compose 文件中使用它时遇到问题因为我看到的示例显示使用 docker 运行 设置每个节点,然后使用节点的 IP 运行 连接共享服务(在我的例子中是 RMQ)来设置环境变量告诉客户端的大使容器将链接服务的数据路由到哪里(如 https://docs.docker.com/engine/admin/ambassador_pattern_linking/ 中)。如何将其转换为 Compose 文件,这样我就不需要知道服务将 运行ning 所在的 IP(因为 Docker Swarm 将在 Compose 文件完成后决定这一点)?
使用链接 deprecated. Instead, you can create a new network 并将所有容器添加到该网络:
$ docker network create myapp
请注意,根据 Networking documentation for Compose,此类网络会自动为您的撰写文件创建。
这意味着您根本不需要设置任何链接或网络,因为 Compose 已经自动创建了一个网络,并且所有容器都应该可以使用容器名称在该网络中访问。
另请参阅 Using Compose with Swarm 了解一些限制。