我对 docker 很陌生,我需要一些关于分发我的应用程序的帮助。
考虑一下:
我有一个物理机池,每台都运行最新版本的 docker。
我的“应用程序 A”有几个容器。为了在此定义中明确,应用程序将是在一个容器、4 个消息传递容器和一个主容器中运行的数据库。所有 6 个容器都需要相互通信。数据库、消息传递等容器将是“服务”。
我还可以拥有“应用程序 B”、“应用程序 C”和“应用程序 N...”,它们的大小和配置与“应用程序 A”略有不同。应用程序之间不相互通信并且完全独立。
要求:
- 所有应用程序“A,B,C..N”必须使用相同的物理机池。
- 如果需要,每个应用程序的每个服务都必须在不同的物理机器上运行。
- 您可能希望限制如何将每个服务分配给每个物理机
- 我需要“即时”创建应用程序
我的第一个想法是使用 docker-compose 来定义一个应用程序和几个 dockerfile 来定义其中的服务。但如果我这样做,每个应用程序都将在同一个 docker 引擎中运行,因此在同一个物理机器上运行。
我已经读到您可以将 docker compose 部署到 docker swarm 中。在这种情况下,docker swarm 将充当 docker 引擎。但是,我找不到任何关于如何做到这一点的例子,而且我不确定这些限制。
我的第二个想法是使用群模式。我会创建一个集群,并在其上运行服务。但是,我会失去“应用程序”的概念。群中会有一堆服务,我无法管理它们之间的通信方式。
所以,鉴于这个问题:
- 有什么假设或陈述我错了吗?
- 场景中推荐的 docker 工具用法是什么?