I have heard people comparing Docker with VMs, but the fact is they both are complementary technologies. They don’t compete with each other; both of them have their distinct qualities and can be used in tandem for combinatorial benefits. They are intermingled in unique ways to achieve different results. Let’s get a quick understanding about both of them and find out how they can be used in tandem for managing the application software and providing security and isolation for that software.
About Virtual Machines (VMs)
VMware changed the face of entire technology industry with its release of VMware Workstation. These virtual machines (VM) were right at the center of the cloud computing explosion. The widespread use of virtualization technology and adoption of VMs led to amazing changes in processor architecture and led to the birth of cloud-based platform providers like Amazon, Digital Ocean, and Joyent of the world.
Calsoft Whitepaper: Storage Performance Testing Guidelines
VMs were born to address the challenge of under-utilization of resources through bare metal applications. This happened due to increase in server processing power and capacity. VMs run software on top of physical servers to emulate a particular hardware system. This software is called a hypervisor, or a virtual machine monitor. It creates and run VMs. This sits between the OS and hardware and is necessary to virtualize the server. VM go through the entire boot process, just like a normal piece of hardware.
Docker is fairly new technology in the virtualization and containerization space. While it utilizes virtualization technology in the Linux kernel, it uses the kernel to create containers, not virtual machines.
Containers sit on top of a physical server and its host OS and share the host OS kernel. These components are read-only, with each container able to be written to through a unique mount. This feature makes the containers exceptionally “light”. That’s why containers take just seconds to start, versus minutes for a VM. The key benefits of containers are their speed and lightweight nature. It reduces the management overhead as well, because of sharing a common operating system.
I believe using both; Docker (and another container solution) in combination with VMs is a good option. Docker containers are fast and less resource-intensive. However VMs still has its own unique benefits like security and isolation. Since VMs enable true hardware-level isolation, the chance for interference and/or exploitation less likely than with Docker containers. So for application/software portability, Docker is your safest bet. For machine portability and greater isolation, go with VMware.
To know more email: firstname.lastname@example.org
Anupam Bhide | Calsoft Inc.
Calsoft has deep expertise in containerization of Storage and Networking products. With our in-depth understanding of various containerization technologies like Docker, Kubernetes, Apache Mesos and Coreos, we have helped ISVs to design and develop solutions in and around these technologies.