Thursday, September 24, 2015

Dockers

Have you ever been in a situation, where you are building applications that depend on certain version of software. For instance you are having certain app, which depends on JDK 1.4 and some app which depends on JDK 1.8 or say even different version of database. There are couple of ways to deal with this

1. Install all softwares and dependencies on single machine.
2. Use of Virtualization like Oracle Virtualbox.
3. Use of Containers .i.e. Dockers.

What are Dockers?

Docker is a container management system, that virtualizes application environment or Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

What is the difference between Dockers & traditional virtualisation?



If you see the above diagram, the way VM is assembled, you require a  Host operation system, a hypervisor (Type 2), on top of that you will create multiple virtual machines, each having its own operating system and then each machine can be configured as per the requirement, which sounds like an over kill for just running applications having different dependencies.

Compare this to Containers, you require an Operating system and then you can have multiple isolated containers  to virtualise.


How do Dockers Work?
There are 3 main components of Dockers
1. Docker File -> These are scripts to build your environment. Think of this like a recipe where you mention all the required components, all libs, all jars. This is a blue print of your environment

2. Images ->  These docker files are compiled into an image just like an .iso.

3. Containers -> From the images, you can create copies of the images to create the containers.

There is also something called Docker hub, which is worth mentioning. Docker hub is a repository of images. Users of dockers either have the choice to create their own image or download an pre-built image which others in the community can contribute.

Summary

Dockers is really a cool technology when we think about virtualisation.  There are lot of Pros in using dockers like

1. Efficiency
2. Less OS Management
3. Fast Deployment
4. Lightweight.

At the same time, there are cons in using dockers like

1. Its still immature compared to VMs
2. Security is still a problem
3. You cannot migrate live workloads

Dockers or containers solve application portability problems, but will it challenge traditional virtualisation, it is something to see and wait for!!.




No comments: