Docker容器和服务之间的区别

时间:2017-04-22 10:46:43

标签: docker

我想知道以下docker设置之间是否存在任何差异。

  • 通过远程api管理两个独立的docker引擎。
  • 通过一个docker引擎管理两个docker swarm节点。

我想知道您是否可以管理具有在特定节点上运行容器的能力的群集是否有任何用例具有单独的docker引擎?

1 个答案:

答案 0 :(得分:3)

两者之间的差异是群模式。当docker引擎以群集模式运行服务时,您会得到:

  • 来自经理的编排,不断尝试纠正当前状态和目标状态之间的任何差异。这还可以包括使用仲裁模型的HA(只要大多数经理可以做出决策)。
  • 覆盖网络,允许不同主机上的容器在自己的容器网络上相互通信。这也可能涉及IPSEC的安全性。
  • 已发布端口的网状网络和不像容器IP那样改变的服务的VIP。后者可以防止DNS缓存出现问题。前者让swarm中的所有节点都发布端口并将流量路由到提供此服务的容器。
  • 滚动升级以避免复制服务造成任何停机。
  • 在扩展服务时跨多个节点进行负载平衡。

有关群组模式的更多详情,请参阅docker's documentation

群集模式的缺点是,当您在远程节点上运行时,您将从容器中删除一层。您无法在任务上运行exec命令来调查容器,您需要在容器上执行该命令并将其放在当前正在使用的节点上。 Docker还从--volumes-from等服务中删除了一些选项,当容器可能在不同的机器上运行时,这些选项不适用。

如果您认为自己可以在单个节点上运行容器之外,需要在不同节点上的容器之间进行通信,或者只是想要滚动升级等编排功能,那么我建议使用swarm模式。如果您有特定要求阻止群集模式成为选项,我只会直接在主机上管理容器。而且你可以随时做同时在同一节点上直接管理一些容器,将其他容器作为一个服务或堆栈内的群集。