答案 0 :(得分:97)
主要区别在于Docker作为项目仅关注运行时容器,而OpenShift(作为系统)包括运行时容器以及用于部署和管理单个容器的REST API,协调和Web界面
仅比较运行时容器,OpenShift和Docker都使用内核隔离功能来保持租户进程分离。对于主要通过LXC和OpenShift的Docker,主要通过SELinux和多类别安全(MCS)。两者都使用cgroup来限制租户的CPU,内存和IO。上游OpenShift正在研究LXC以减少长期工作。
Docker使用AUFS进行高级磁盘和文件拷贝写入共享,OpenShift既不需要也不与此类系统不兼容。
在容器内部,OpenShift通过“cartridge”模拟功能单元(web服务器,dbs),这是一组在调用系统时调用的shell脚本钩子。 API描述为here。墨盒大致类似于泊坞窗图像。
Openshift还描述了代理(协调器)与节点(托管多个租户容器的服务器)通信的API,以调用该容器中的端点。
编辑添加:截至2015年6月,OpenShift Origin 1.0在Docker和Kubernetes之上运行,您可以构建和开发在Docker运行时运行的多容器应用程序。 OpenShift在Kube和Docker之上添加了构建,图像工作流和推广,以及安全的容器集群操作
答案 1 :(得分:4)
我认为我应该利用2018年底之前提供的信息来更新该问题的答案。
与最初提出问题时相比,现在的情况要复杂一些。目前,Docker Inc.是docker和Moby的主要开发人员-Moby当前是docker运行时和docker商业企业版(想象中称为Docker Enterprise Edition)的上游项目。
对该问题的当代分析将得出Docker Enterprise Edition与RedHat OpenShift的比较。这些容器平台彼此直接竞争,并且都被认为是可以在本地和云中运行的Kubernetes发行版。在撰写本文时,Docker Inc.的Docker-EE在功能和销售方面处于领先地位,但是提供kubernetes平台即服务并开始使用的公共云提供商之间存在激烈的竞争。进入更高级的无服务器容器平台。
答案 2 :(得分:1)
这是迄今为止最好的初学者解释。 https://deis.com/blog/2016/kubernetes-illustrated-guide/
这不是一个玩笑,有时我们需要像孩子一样查看事物以便真正理解。
我不会说它们甚至可以比较。 Openshift是redhat的企业解决方案,基于kubernetes构建。 Kubernetes只是一个框架,可以帮助组织和自动化使用docker容器。 我将从视频开始,然后在较低级别查看kupernetes。一旦你感到舒服,然后开始研究openshift添加的功能。
答案 3 :(得分:1)
过去两年我发现了一些有关这个主题的有趣读物:
答案 4 :(得分:0)
Openshift更像是容器编排的抽象层。 Openshift内部使用Kubernetes进行容器编排。 Kubernetes是Docker容器的容器编排系统,与Docker swarm相比更为广泛。
Openshift是部署企业应用程序的理想平台,因为它提供了Image(S2I)功能,容器编排,服务发现,服务扩展,构建管道的源代码。所有这些都是通过CLI和提供良好用户界面的openshift仪表板完成的。 Docker有docker swarm可以进行容器编排,但是很多事情都必须手动完成而没有任何用户友好的接口。
答案 5 :(得分:0)