Openshift is Red-Hat's Container Application Platform for development and hosting of Enterprise grade applications. Out of the different cloud computing models, Openshift comes under the PaaS category. Once deployed into the environment, it can take care of the underlying infrasturcture components with great effectiveness.
Openshift further has four categories, one of which is Openshift Origin out of which the other 3 are derived. Here we will be covering Openshift Origin, which is based upon Docker containers and Kubernetes cluster manager along with added Development and Operational centric tools that allow us for rapid application development, deployment and lifecycle management.
Consider that you have a project in which you need to build an application which has multiple dependencies on technologies for Databases, Web Servers, Messaging and Orchestration. Now these technologies will have their own libraries, dependencies, and compatibility issues with the underlying shared OS kernel. Every time you change something in the application or in the technologies used, you need to ensure that the change is supported by the underlying dependencies and this process can sometimes be tedious. This is where Containers come into picture.
Containers are isolated environments which have their own processes, services, N/W interfaces, mounts just like VMs except that they share the same OS kernel. So it is not possible to create a Container with a Windows OS on top of a host with a Linux OS kernel. Docker is currently the most popular container technology. It provides high level tools with several powerful functions for the end user.
Unlike Hypervisors, Docker will not virtualize and run different OS with different kernels on the same hardware as it is developed to run containers with OS supported by the host OS kernel.
Below are some of the key differences between VMs and Containers :-
So it can also be said that Containers enable more efficient utilization of resources of the host machine.
An application relies on various dependencies or backend services to function. Hence, to ensure smooth functioning of application in production, you will need a platform to perform all the container management tasks. Some of the different types of Container Orchestration technoloies are Docker Swarm developed by Docker themselves, Kubernetes developed by Google and MESOS developed by Apache. Kubernetes is most widely used platform for Orchestration as it has some great advantages :-
Kubernetes is one of the most popular Container Orchestration technology used out there.