If you have been following open source, you might have heard about Docker and containers, and the impact it is going to have on Virtualization and DevOps. In this article, I would like to introduce you to the concept of Docker and how it fits into the current Devops requirements. So, let’s start and first learn “what is Docker”.
What is Docker?
A Docker is an open source platform for containers that provides a lightweight application isolated virtualization that reduces system overhead. It also enables to create, run, and deploy applications as a single package to any kind of environment, without the consideration of differences between build and production environments.
Difference between Docker and standard virtualization?
Fig.1 Design of a VM v/s Docker
- A Virtual Machine is an abstraction of physical machine where each VM has its own guest operating system. This means that initializing each virtual machine would require creating a virtual abstraction layer of physical machine and then setting up complete OS boot. Thus, each VM would consume a lot of system resources, in terms of storage, RAM, and CPU.
- Docker is an OS level virtualization which means containers share the same host OS and its resources, but are isolated from each other. Since containers share the same OS resources, it makes them very light-weight and surprisingly fast.
Why to use Docker?
Container technology provides the solution for the applications to be wrapped up quickly from its components such binaries, libraries, configuration files, as a single package and be deployed on different platforms/environments without any consideration of compatibility issues.
- Less Overhead
Containers utilize the advantage of saring the Guest OS and its resources, which makes them light-weight, fast and superior to Virtual machines.
- Version Control
Like any version control tool, containers provides the capability to access different versions of containers and not worry about the environment specific customizations.
How it fits in DevOps (Development + Operations)
- The developers don’t have to worry about setting up the specific development environment every time. Instead, they need to focus on building good quality code. This obviously leads to acceleration in the development efforts.
- For IT operations team/Sysadmins, Docker makes it possible to set up environments that are exactly like a production server, and allow anyone to work on the same project with the exact same settings, regardless of the local host environment.
- Docker has been utilized in different DevOps applications, such as Puppet, Chef, Vagrant, and Ansible, for the task of automating the provisioning of environments and the deployment of those environments.