What are Containers and why do we need them?


Hi, everyone. I’ll be talking about containers today and why we need containers? And what are they?

So, as everything started moving from monolithic to microservices, the reason for this was that the application architectures have rapidly changed because everybody wants everything much sooner in the market and wants the applications isolated.

So what was the problem with the monolithic applications or architecture?

So what these did was that the entire code would be sitting in a single server. So any time anybody had to make a small change, they would have to recompile and retest the entire code.

So this gives you a single point of failure. Plus, it takes a lot of time and cycles to be actually getting to the complete stage of finishing up the code. So that’s the reason everything started moving towards virtualization and then now towards containers.

So, let’s go over first what is virtualization? So here I have my infrastructure. On top of this I have my host OS. Then we have our hypervisor. And this is what lets you build your individual VMs (Virtual Machines).

Now each VM has its guest operating system. So, each one you could have independent OS running. On top of that, you have your binaries and libraries. And then you build your apps. So I have my app 1, app 2, app 3.

So, I have now built three VMs with each running and individual app 2 and 3.

So this does give you a complete isolation of each application and they’re all running independently. Let’s see now what containers do for us?

Of course, you have your infrastructure. You have your host OS? And instead of a hypervisor, we have something called a Docker which manages these containers or gives you the container images.

And now on top of this you build your containers. The key difference between virtualization and containers is that containers do not have any guest operating system.

They rely on the host operating system. So you directly have your binaries and libraries. And on top of this you have your apps … app 1, app 2, app 3. So this is my container one, container 2, and container 3.

So what have we done here? So basically virtualization was an infrastructure level construct and what that does is it breaks up since a single machine into multiple servers. Whereas container is truly an app level construct. It is breaking up the apps into individual processes and operations.

And these are truly lightweight and highly scalable. So, the size of each container is in the scale of megabytes. Whereas the size of these are in the scale of gigabytes.

So the boot up, time is near instantaneous. So when you are booting up a container, it boots up within seconds. Whereas when you boot up a VM, it takes a couple of minutes to boot up because it has to boot up the guest operating system each time it is coming up.

The containers are highly portable. You can easily move them from one place to the other and they’re highly. We scalable and they are very highly available.

So, they provide complete isolation of applications and very easy portability and that is the main advantage, why, everything is moving towards containers.

So, I hope you learned something here today, and I hope this was helpful for you. Thank you for watching.

Related Resources