Docker is a tool which provides a way to package applications with all the necessary configurations and dependencies in a loosely isolated environment called container.
What is Container?
Container is a virtualized environment where the applications are isolated from the underlying systems in runtime. A container is a collection of layered images of both base and application.
Why to use docker?
In early days web applications were deployed using Virtual Machines with some deployment scripts using additional tools. Where Virtual Machines would create completely isolated environments of your main operating system and has a dependency of the guest operating system. The idea here is to spin up a Virtual Machine and set up your web application, install database server, Web Server etc., Every time when you want to deploy your web application, you have to follow all the steps mentioned above as this would be very time consuming and a tedious process. With docker you do not have to install any guest operating system as the docker containers share the host operating system.
Advantages of docker?
One of the biggest advantages of docker is that it is very light weight when compared to Virtual Machines and it saves a lot of money and time as it efficiently uses system resources and helps isolating the applications.
Are there any disadvantages?
The core concept of docker is virtualization such that the infrastructure would still be subjected to limitations when interfacing between containers and the host system. Other limitations include complication of Persistent Data Storage, GUI applications etc.,
This content was originally published here.