Docker For Beginners : An Introduction
I was hearing this big name “Docker”, “kubernetes” these days and i was really confused and curious about these stuffs at the same time. Microsoft, Google, Amazon and everybody seems to have jumped into this over the last few years, but why is everybody so excited about this stuff?
Before going to Docker,first i would like to discuss about the Virtual Machines, because this is what that motivated the developers to think of the Docker. So basically we all are very familiar to the Virtual Machines,a virtual environment to run the applications,os and the other stuffs. VMware and Virtualbox are the very good example of Virtual Machine Monitors (VMMs). When you required Linux environment and currently you are on windows or on any other environment ,then VMMs come into the picture and you get your things done. VMs take up a lot of system resources. Each VM runs not just a full copy of an operating system with a virtual copy of all the hardware. This quickly adds up to a lot of RAM and CPU cycles.So the question is, does your VM really gives you good performance?
Obviously No! So you solve your problem by sacrificing performance. Isn’t it?
Just think about the servers,they serve thousands of requests at a given instance,sometimes the no of requests go beyond the serving capacity,results into poor performance. That is how container came into existance. In simple words Container is the lightweight OS.i.e it contains only the necessary parts such as libraries,dependencies and frameworks etc to deploy the application and because it is very small so you can pack lots of containers into the single computer.So it reduces the lots of overheads.
So the thing is,In VMs we put our code into the environment and in container you built an environment and now you can run it anywhere.Containers became a core feature of Linux long time ago but there were still very hard to use and thus Docker came with solution and made the use of containers developer friendly.Actually Docker uses the containers to build an environment and instead of installing everything ,it is available on cloud inside the containers.So is the problem solved?
No,but it came with one another big problem that is managing the bunch of containers (load balancing) and Kubernetes was developed to manage the containers.And another problem with container is the security and packaging.Packaging is very tricky because you know what you have but don’t know what you depend on.Security issue comes into the picture because now you are shipping the large no of containers with the docker so you are risking all the containers due to security breach and that is where VMs win the race.There is another very good article on VMs and containers and one another on Docker.
Disclaimer:I am very new to the containers, VMs, Docker etc.So i will be very happy if you could complement my learning.