Kubernetes Pods和Docker Compose之间有什么区别(Composures?)

时间:2015-11-26 19:56:17

标签: docker containers kubernetes docker-compose

Kubernetes Pods和Docker Compose脚本(以下称为“Compositions”)的结果似乎都会导致虚拟计算机集群。

群集中的计算机都可以配置为相互通信,因此您可以编写一个镜像整个端到端生产配置的脚本。单个脚本允许您在任何容器主机上部署该群集。

鉴于两个系统之间的相似性,我很难理解两者之间的差异。

为什么我会选择一个而不是另一个?它们是相互排斥的系统还是我可以在kubernetes中运行组合。

在设计容器系统时是否需要考虑任何关键因素?如果我正在为今天的网站设计架构,并且喜欢来尝试构建基于容器的系统。我应该设计的最重要的事情是什么? (与在单一机器系统上构建相比)

3 个答案:

答案 0 :(得分:42)

docker compose只是一种声明你必须启动的容器的方法:它没有节点或集群的概念,除非它启动swarm主节点和swarm节点,但那是{ {3}})
2016年7月更新,7个月后:docker 1.12模糊了行和docker swarm

includes a "swarm mode"有很大不同,后者是一个谷歌工具,可管理数千个容器组作为Pod,数十台或数百台计算机。

kubernetes Kubernetes Pod

  

想象一下各个Docker容器作为包装盒。需要保持在一起的盒子因为需要到达相同位置或彼此具有亲和力而被装入集装箱中。   在这个类比中,包装盒是Docker容器,运输容器是Kubernetes容器。

be closer from a docker swarm作为commented below

  

我认为pod相当于compothe,除了kubernetes可以编排pods,而没有任何编排组合,除非它与你提到的swarm一起使用。

你可以ealeon

launch kubernetes commands with docker-compose by the way

  

就Kubernetes与其他容器管理系统(如Swarm)的不同而言,Kubernetes是Google开发的第三代集群管理器。

您可以在http://3.bp.blogspot.com/-MDUsXIy-lt0/VMuhJ9jBefI/AAAAAAAAA0I/qPuy0N8UXWA/s1600/Screen%2BShot%2B2015-01-30%2Bat%2B7.19.27%2BAM.png中了解有关kubernetes的更多信息。

虽然两者都可以创建一个多容器应用程序,但Pod也可以作为部署和水平扩展/复制的单元,而docker compose不提供。 另外,您不能直接创建pod,而是使用控制器(如复制控制器)。

POD生活在一个更大的平台中,该平台提供协同定位(共同调度),命运共享,协调复制,资源共享和依赖关系管理。 Docker使用docker-compose.yml文件

独立构建生命......

答案 1 :(得分:3)

尽管上面的答案清楚地回答了这个问题,但我正在添加一些快速笔记。

  1. Docker-Compose和Kubernetes pod都是配置 从图像定义容器实例的文件(Yaml)。

  2. Docker compose本身只是一个能够包含通信服务(容器)的文件;它本质上是非分布式的。

  3. Kubernetes pods还可以定义多个容器,但这里的主要区别在于可用节点之间的分布概念。
  4. 最后,Docker Compose是一个定义和运行的工具 除非编排,否则多容器Docker应用程序没有编排 告诉他们用Swarm这样做。并且pod包含多个容器,如果可用,它们将自动在节点集群中共享。

答案 2 :(得分:2)

网络方面有所不同:

  

pod中的所有应用程序都使用相同的网络名称空间(相同的IP和端口空间),因此可以彼此“查找”并使用localhost进行通信。因此,吊舱中的应用程序必须协调其端口使用情况。每个Pod在平坦的共享网络空间中都有一个IP地址,该IP地址可以与整个网络上的其他物理计算机和Pod进行完全通信。

  • 在docker-compose中的容器被分配了不同的IP地址。有关更多信息,请参见此blog post