We have been hearing about containers for a while now, especially with Docker gaining momentum in the market back in 2013. There is a notion that these are “cloud stuffs” as we often hear these words related to the Cloud technologies and we used to ignore saying “not my cup of tea”. But now, the world is moving towards these technologies and almost every business want to embrace them to capitalize every possible business opportunities and gain advantage over their competitors. Someone might argue about the relevance of this article now especially when Cloud technologies and containerization have already gained a lot of acceptance in the market. This is for those who are taking their baby steps in to the world of Cloud technologies and Containerization.
So, What is Containerization?
The moment I heard the word ‘Container’
for the first time, the first image that came to my mind was the big cargo
container. I believe the best and simplest way to start understanding
containerization is to take analogy from the logistics business domain. Imagine
the operational overhead a logistics company has to go through when they have
to transport a variety of goods using different modes of transport like trucks,
buses, ships etc. The company has to package good based on the medium of
transport and this creates inefficiency. Now, imagine the same scenario where
in the company starts using standard containers so that almost anything can be
accommodated and transported much faster from one place to another and between the
available modes of transfer. The same inefficiency and operational overheads
exists when we move an application from an application developer’s machine to a
test environment and from there to further higher environments. It could be
because of compatibility issues, version mismatch, configuration issues and
many other reasons. But, we end up losing time and effort in fixing the same
issues from one environment to other. Containerization provides a solution to
such inefficiencies. The below figure can help to better visualize about what I
am talking about

Containerization is a standard and
efficient way of packaging an application, its libraries and dependencies.
Containerization is the result of initiatives to improve the efficient use of
resources beyond what Virtualization and Virtual machines can offer. We all
have been hearing about and using Virtual Machines (VMs) over a decade now.
With Virtualization, the operating system and the applications running on it
are packaged together as Virtual Machines. But, with Containerization, only the
applications and its dependent objects are packaged together as containers.
Multiple containers can run on the same Operating system and they share the
operating system kernel. Having said that, virtualization and containerization
are not completing technologies. Rather, they are complementary to each other.
The below
figure explains the difference between Virtualization and containerization at a
high level
Why Containerization?
1. Containerization
enables applications to run anywhere by isolating the application and its
dependencies. The container doesn’t care about the host on which it is running
and the host doesn’t care about the containers that run on it. The interfaces
are standard and hence more predictable.
2. Containers
remove the OS layer from the package. This makes the container a lot more
smaller in size than a traditional VM. This enables accommodating more
containers on a machine when compared to full blown VMs there by saving
operational cost.
3. As
all dependencies of an application are bundled inside a container, it makes the
application more portable.
4. As
containerized applications need not wait for the OS to bootup as in the case of
VMs, they can be launched much faster than applications deployed in traditional
manner
5. Containerization
approach helps in automated deployments there by supporting DevOps practices.
Automated spawning of a new application instance based on predefined load
levels can be easily achieved with containerized applications.
However,
Containerization is not a silver bullet. There are certain areas which still
need improvement and they are being taken care by major tech companies in the
market and the contributions from active communities around the world.
#Cloud
#Containers #IT