Last month, Docker and Microsoft partnered to bring official Docker container support to Windows. If you’re a developer, you may be asking, “Why?” Keep reading for some perspective.
On its face, Docker’s ability to run natively on Windows, without any kind of virtualization, is a big deal. It significantly expands Docker’s purview. It also brings software containers to Windows for the first time in a big way.
Why Use Docker on Windows?
That said, if you’re a programmer or admin, you may be wondering why it matters nearly as much as Docker on Linux.
The reason is this: Docker containers on Linux are a handy way of simplifying what would otherwise be a complex deployment landscape. Linux distributions vary widely. Normally, if you want to run a given app on Linux, you have to configure it (and maybe even compile it) for the specific Linux kernel and distribution on which you want to deploy it. Docker containers solve that challenge by allowing you to deploy to any type of Linux with no environment tweaking.
In contrast, deployment is not so complicated in the Windows world. Versions and environments vary somewhat, but not nearly as widely as Linux distributions. After all, there are currently about a half-dozen different versions that receive active support. There are hundreds of different flavors of Linux.
From this perspective, it’s easy to wonder why Docker containers are important in the first place—especially since Docker currently supports only Windows 10 and Windows Server 2016, so it can’t even help with backwards compatibility for earlier versions of the operating system.
Why Not Use It?
On the other hand, it has its selling points, despite the comparatively low importance of environment consistency across the Windows ecosystem.
Probably the biggest advantage is that they make it easier to update or roll back applications in a clean way. That is something that traditionally has been easy to accomplish on Linux distributions, thanks to package managers, but difficult to do on Windows, which lacks real package management. (OK, Windows 10 quietly offers PackageManagement, the package manager formerly known as OneGet, but who really uses that to install their software?)
Another advantage, which is as important on Windows as it is on Linux, is the ability to bake configuration details into containers. This makes the app running inside the container less dependent on the host environment. It also minimizes the amount of configuration that admins need to perform after installing the app.
Last but not least, it makes hosts “denser” by allowing them to support more apps running inside software-defined environments. In other words, you can deploy more apps as containers than you can by deploying them as traditional virtual machines, because containers have a smaller footprint. Here, too, it does not do anything that Docker on Linux can’t already do. But it’s still an advantage for Windows server administrators, who can do more with less infrastructure by migrating to containers.
So, Docker for Windows may be almost as useful as Docker for Linux, even though the two are still very different beasts.