Containers versus virtual machines. That’s the rhetoric that has shaped the conversation so far as organizations evaluate solutions such as Docker and compare them to VMware. But what they should really be doing is understanding how containers and virtual machines can work together.
If you type “docker vs” into Google, “docker vs vm,” “docker vs. vmware” and “docker vs virtualbox” are all high on the list of suggested search terms that pop up. That’s no surprise. To date, people have tended to see containers as a replacement for traditional virtual machines.
But that thinking largely misses the point of containers. Containers are similar to, but significantly different than, hypervisor-based virtualization. Containers and virtual machines don’t solve all of the same problems, so they can’t replace one another fully.
Containers and Virtual Machines
Instead, containers and virtual machines complement each other. Organizations that want to make the most of containerization should use containers and virtual machines in ways that maximize the value of each of these technologies.
One way to do that—and the most common way in which organizations are combining virtual machines with containers today —is to use virtual machines as hosting platforms for containers. In other words, you create a virtual machine, then run Docker on top of it.
But that approach is only one option. It’s also not optimal in some cases, since you lose the bare-metal performance potential of containers if you run them on a virtual machine.
Another strategy is to build a hybrid infrastructure where containers are used for deployment of certain apps—such as those that benefit from bare-metal access—and virtual machines host others. In the latter category, you might use virtual machines to deploy Windows apps, since Docker currently lacks strong support for Windows. (Yes, the support is there, but it’s limited only to the most recent versions of Windows, and some components such as networking are not yet fully baked.)
The challenge for this scenario is that most container orchestration tools currently don’t do a good job of managing infrastructure that has apps running in containers as well as virtual machines. Most container orchestrators were designed only to handle containers. But that no doubt will change if organizations start running containers and virtual machines alongside one another.
The key takeaway is this: If you’re trying to decide whether to replace your virtual machines with containers, you’re debating the wrong issue. Instead, start thinking about how containers and virtual machines can work together for you.