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