78

Docker and OpenShift are both frameworks to implement a PaaS service.

How do they compare in architecture and features?

7 Answers 7

119

The primary difference is that Docker as a project is focused on the runtime container only, whereas OpenShift (as a system) includes both the runtime container as well as the REST API, coordination, and web interfaces to deploy and manage individual containers.

Comparing just the runtime containers, OpenShift and Docker both use kernel isolation features to keep tenant processes separate. For Docker that is primarily through LXC and for OpenShift that is largely through SELinux and Multiple Category Security (MCS). Both use cgroups to limit the CPU, memory, and IO of tenants. Upstream OpenShift is looking at LXC to reduce long term effort.

Docker uses AUFS for advanced disk and file copy-on-write sharing, OpenShift neither requires nor is incompatible with such a system.

Inside the container, OpenShift models units of functionality (web servers, dbs) via "cartridges", which are a set of shell script hooks that are called when the system is invoked. The API is described here. A cartridge is roughly similar to a docker image.

Openshift also describes the API by which a broker (coordinator) communicates with nodes (servers that host multiple tenant containers) to invoke endpoints in that container.

EDITED TO ADD: As of June 2015, OpenShift Origin 1.0 runs on top of Docker and Kubernetes, and you can build and develop multi container apps that run on the Docker runtime. OpenShift adds build, image workflow and promotion, and secure container cluster operations on top of Kube and Docker

4
  • 2
    @Clayton Broken link. The cartridge API is now described here. Nov 19, 2013 at 12:44
  • Fixed the link and added more info about OpenShift and Docker
    – Clayton
    Dec 12, 2013 at 2:48
  • @Clayton, thank you for this helpful post. Now with GearD, does that mean that cartridges are obsolete, if one uses GearD? I think so from your post but wished to clarify. Thank you! May 27, 2014 at 2:25
  • AuFS layered filesystem, LXC
    – sari
    Dec 13, 2016 at 8:35
13

A picture is worth a thousand words:

enter image description here

12

I thought I should update the answers to this question with information available near the end of 2018.

The situation right now is a little more complicated than when the question was originally asked. Right now Docker Inc. is the primary developer of docker and Moby -- which is currently the upstream project for the docker runtime and the commercial enterprise edition of docker, imaginatively called Docker Enterprise Edition.

Contemporary analysis of this question would result in a comparison of Docker Enterprise Edition with RedHat OpenShift. These container platforms are in direct competition with each other and both are considered to be Kubernetes distributions that can be run on-prem and in the cloud. At the time of writing, Docker Inc.'s Docker-EE is leading the pack in terms of features and sales, but there is stiff competition from the public-cloud providers who are offering kubernetes Platform(s) as a Service and are starting to move into more advanced Serverless Container Platforms.

2

I have found some interesting readings about this topic over the past two years:

2

Here is by the far the best beginner explanation. https://deis.com/blog/2016/kubernetes-illustrated-guide/

This isn't a joke, sometimes we need to view things as a child would in order to really understand.

I would not say they are even comparable. Openshift is an enterprise solution by redhat that builds on kubernetes. Kubernetes is just a framework to help organize and automate working with docker containers. I would start with the video and then look at kupernetes at a lower level. Once you are comfortable then start looking into the the features that openshift adds.

2
  • 1
    OpenShift is not just an enterprise version of Kubernetes, it provides a lot of value add on top of that. Kubernetes itself isn't really an end user product, it is just one project, which helps in managing containers. You need to add a bunch of other projects in with Kubernetes to make it more usable to developers. For example, metrics, aggregated logging, build and deployment automation, optionally done using Jenkins. All these sorts of things and more come out of the box with OpenShift, where as you have to install them yourself with Kubernetes. Oct 27, 2017 at 4:30
  • Hi Justin, guide link is dead Sep 24, 2019 at 6:16
1

Openshift is more of an abstraction layer on container orchestration . Openshift internally uses Kubernetes for container orchestration. Kubernetes is container orchestrating system for Docker containers which is more extensive as compared to Docker swarm .

Openshift is perfect platform for deploying an enterprise application as it provides source to Image(S2I) feature , container orchaestration , service discovery , scaling of the services, build pipelines . All these are done both with CLI and openshift dashboard which provides good user interface . Docker has docker swarm for container orchestration but lot of things has to be done manually without any user friendly interfaces .

0

Openshift is an abstraction layer on top of kubernetes (k8s) and provides a useful UI that k8s lacks. As you may know, k8s is an orchestrator and requires your application packaged as an image. You can use docker to create your image though you are not limited and use other vendors like rocket etc for this purpose.

The production deployment platform that docker has is called docker swarm. Its an awesome platform however k8s is leading this domain and currently industry's top choice.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.