【问题标题】:Docker usage in compose/swarm modeDocker 在 compose/swarm 模式下的使用
【发布时间】:2017-05-19 05:45:25
【问题描述】:

我对 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 工具是什么?

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-swarm-mode


    【解决方案1】:

    Docker Compose 可以与 Docker Swarm Mode (Docker 1.12) 一起使用,但目前还不能完全兼容。看看Docker Stacks and Bundles

    在 Docker 的下一个版本(1.13)中,还会有 Docker Compose v3 的新版本,它将与没有 Docker Compose 的 Docker 兼容。这将使您可以像这样部署 Docker Compose 文件: docker deploy --compose-file docker-compose.yml AppA

    目前这是实验性的,但在 Docker 1-13-rc5 上运行良好。 (Docker Releases)

    可以在article 中找到对此的更详细说明。

    为了让它们都在不同的主机上运行,​​这可以通过在 docker service create(或 Docker Compose v3)中定义约束来实现(参见Docker Service Create - Constraints)。但是为什么需要让它们在不同的主机上运行呢?

    可以通过 --limit-cpu 和 --limit-memory 限制每个服务能够使用的 CPU 和内存使用量。

    如果您想使用 Docker Swarm 模式,您可以在本地主机上使用 Docker Machine 创建一个 swarm。 (注意不要使用旧的 Docker Swarm)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多