The main difference is that Docker as a project is focused only on the runtime container, while OpenShift (as a system) includes both the runtime container and the REST API, coordination and web interfaces for deploying and managing individual containers.
Comparing runtime containers only, OpenShift and Docker use kernel isolation functions to separate tenant processes. For Docker, this is, first of all, LXC and OpenShift, which is largely ensured by SELinux security and multiple category (MCS). Both use groups to limit the CPU, memory, and IO of tenants. Upstream OpenShift reviews LXC to reduce long-term efforts.
Docker uses AUFS to share disks and files with copy to write, OpenShift does not require and is not compatible with such a system.
Inside the container, OpenShift models units of functionality (web servers, dbs) through "cartridges", which are a set of shell script commands that are called when the system is called. The API is described here . The cartridge is approximately similar to the image of the docker.
Openshift also describes an API through which a broker (coordinator) communicates with nodes (servers that host multiple tenant containers) to call endpoints in this container.
EDITED ADD: Starting in June 2015, OpenShift Origin 1.0 runs on top of Docker and Kubernetes, and you can create and develop multi-container applications that run during Docker execution. OpenShift adds assembly, image manipulation and promotion, and also protects cluster cluster operations on Kube and Docker
Clayton May 31, '13 at 3:33 2013-05-31 03:33
source share