In this series of articles, I'll discuss few fundamental components of Openshift (hereby refereed to as OCP). Furthermore, all these discussions targeted with OCP 3.11 in mind unless otherwise stated. Finally before we start, I write these articles first and foremost to expand my knowledge before other's and to make sure I understand these topics as well as I think I do in my day-to-day job.
The Most Basic Unit
Right out of the RedHat's documentations, as no one can put it any better. Containers are the most basic Openshift component. By basic I don't mean to lessen their importance, instead; it is the foundation and the building block of everything else, invaluable.
What's a Container?
A container is lightweight alternative to VM. You say that didn't answer my question, I'd say you are right.
Answer: A container is a technology which is responsible for separating the processes from one another and limiting the access of each container to a pre-defined set of resources. A group of processes can co-exist on the same host, however they are isolated so much so that they have no knowledge of each other. By running lightweight processes, we are know able to build and package an application in a simple container and deploy it anywhere that support that technology. (Spoiler alert: everyone these days support containers)
It is usually compared to its older brother in the industry, this brother is known as a Virtual Machine. VMs used to be the standards of running applications in isolation, however they are heavy and expensive for reasons we discuss soon. Yet it's important to note that VMs are still a valuable member of the community. For example, do you know that we use VMs to create cluster nodes which in turn handle all of Openshift Infrastructure?
Conclusion: It's not one verses the other. As with any technology, language or tool, you choose what works best for the job.
Containers De Facto Technology
There is a long and rich history about the technology and the people behind it. However it safe to say that Docker is one of the first successful group to achieve such great success and popularity and the craze of containers started in 2013.
That's said, the industry is now leaning more towards an open-standard container technology. And that's what Docker did by donating the "Containered" project to the Cloud Native Computing Foundation.
ONCF created the Open Container Initiative to help the industry standardize our approach to containerizing applications. Going forward, in Openshift 4, Redhat will be using it's Kubernetes implementation of hte OCI called "CRI-O"