Tuesday 31 May 2016

Containers (Docker) - OS Virtualization

Lately I have been looking at some application virtualization stuff. Majority of us are aware of  how server virtualization works however the concept of application virtualization is relatively new.

To understand what it is, let's first see what server virtualization is. In the old days, organizations used to keep physical servers to run their applications. Normally one physical server would be used to run one or two specific applications. Depending on the number of applications, companies had to maintain server farms which meant management of multiple Hardwares and Softwares, paying for CoLo space and electricity bill for all the physical devices.





















Over the years, physical resources became more powerful and the software applications were not able to fully utilize them.  Then came "VMware"! VMware introduced the concept of "Hypervisor" which allowed multiple operating systems to share a single hardware host. Each operating system can access physical hosts' processor, memory, NICs and other resources. Effectively customer can buy few hardwares and run multiple operating systems on it. Each OS can use the resources of the physical box and run specific applications.  By using this technology, organization can reduce their OPEX and CAPEX significantly.



Now a days, we frequently come across the word like "Containers". Containers are another type of virtualization. They don't use hardware emulation. Each "Container" includes the application and all of its dependencies, but share the kernel with other containers. It runs as an isolated process on the host operating system. This technology eliminates the need of a separate Guest OS to run various applications.




"Docker" is one such open source project which automates deployment of applications in containers. Docker allows applications to use the same Linux kernel as the system that they're running on. Docker packages an application and all its dependencies in such a way that it doesn't require a full-fledged virtual machine to run, you can shove as many applications as you want onto a single host Linux operating system. For example, if you're running Ubuntu on your home PC, and you package up your applications e.g. web servers and databases into a Docker container, they'll run fine on any Linux distro even if it's running on a private cloud, a physical server or AWS/Azure.

More information about the Docker can be found from https://www.docker.com/


1 comment:

  1. Waiting for more articles, I finished all of them, Thank you for writing

    - Jignesh

    ReplyDelete