Before we introduce and define Containerization, we need to understand the origin of Containerization. Before the rise of Containerization, the Applications, and software run on a physical computer inside a Datacenter. Large Infrastructure running inside Datacenter introduced numerous challenges which were overcome by Virtualization. But nothing is perfect there were some flaws in it as well. The license cost is a major factor and maintenance overhead consumed all the time of an IT operator that includes but not limited to patching of VM’s, software configuration, etc. Lastly, VM’s consumed lot of resources and software deployment time is more in today’s fast pace World.
Introduction to Containerization:
Containerization technology was a game-changer, it changed the entire perspective of how applications should be built and shipped. Each application runs in an isolated space called a container. Thus, a container consists of an application and its dependencies required to run on a platform. Containers do not contain the full OS. Containers on a single host share a single OS. Thus, making it lightweight and standalone package which is highly portable and can run on multiple infrastructures like on VM’s, Cloud, etc. without a need to configure it for each environment separately.
Without talking about Docker, the discussion for containers will not be complete.
Docker, Inc. is the company that is responsible for the maintenance of an open-source project called Docker (Later renamed to Moby in 2017). When we talk about Docker, we usually refer to Docker Engine. Docker Engine runs and orchestrates containers. Hence it is often recognized as the container runtime. There are two editions of it:
- Community Edition (CE)
- Enterprise Edition (EE)
The OCI (Open Container Initiative) is the council responsible for standardizing the most fundamental components of Docker and they published below two standards:
- The Image Spec
- The Runtime Spec
That means any Container runtime engine has to adhere to the standards set by OCI. Examples of other Container runtimes include CRI-O, Containerd, etc.
Difference between Containers and Virtual Machines.
- Containers are lightweight compared to VM’s because they don’t run full-blown OS as all the containers on a single host share the single OS.
- The application startup time is significantly reduced in containers to seconds as compared to minutes in VM’s.
- Containers utilize less memory and space because applications are packaged with the minimum required dependencies.
- Containers are more portable because of their lightweight nature they can be migrated or built on any OS.
- Application deployment time on containers is very less as compared to VM’s.
- Containers are best suitable for microservices architecture where each component can be managed and scaled independently without affecting other components within the same application.
- Containers are also best suitable for DevOps
Benefits of Containerization:
Below are the benefits of Containerization but are not limited to the following points only.
- Easy to build and manage Containers.
- Application time to market is reduced.
- Less overhead in managing the containers as compared to VM’s.
- Lower costs as compared to VM’s.
- Highly portable because a container can run on Bare Metal inside Datacenter, on a Virtual Machin or cloud.