In case you haven't noticed yet, Microsoft is placing a big bet on Docker containers. How does Microsoft see Docker fitting into the Windows world? Here's an overview of Microsoft and Docker's past, present and future.
A Brief History of Docker and Microsoft
When Docker containers were born in 2013, they were very much a Linux-only technology. At the time, Docker depended on LXC, a container framework for the Linux kernel, to run.
From an early date, however, it became apparent that Docker needed to make it easy for programmers to write and test software for Docker from the Windows or Mac workstations on which they do their coding. Thus were born Docker for Windows and Docker for Mac.
The names of these packages are kind of confusing. Docker for Windows and Docker for Mac don't make it possible to run Docker directly on Windows or macOS. They used a Linux-based virtual to host Docker on those platforms. The introduction of these packages streamlined the installation and configuration of Docker, but they didn't revolutionize the way people used Docker.
Bigger change came with the release in 2016 of native Docker support for Windows, which was developed via a partnership between Microsoft and Docker, Inc. Native support means that Docker containers can run directly on Windows, without a Linux virtual machine serving as the middleman.
Docker on Windows Today
There are, however, some important caveats. One is that when Docker runs natively only on Windows 10 and Windows Server 2016. Another is that some networking features for Docker on Windows are still under development.
And perhaps the biggest limitation to keep in mind is that Docker on Windows can only host Windows applications inside containers -- just as Docker on Linux can only host Linux applications.
This is a key difference between Docker and virtual machines. Using the latter, you can run a Windows app on a Linux server and vice versa. Not so with Docker.
Microsoft's Docker Push
So, Docker is still a little rough around the edges when you use it on Windows. It can't match virtual machines when it comes to the important functionality of cross-platform portability.
Nonetheless, it's clear that Microsoft sees Docker as much more than just an experiment. The company has been moving forward quite aggressively not only in building out Docker functionality on Windows, but also constructing a complete set of tools for running Docker containers in a Windows environment.
Microsoft now offers Windows Containers as a service on the Azure cloud (as a beta feature). It recently acquired Deis, adding a container orchestration solution to its in-house technology stack. And it's continuing to promote containers in Windows Server 2016.
Containers and Microsoft's Strategy
Microsoft's interest in Docker may seem strange. Microsoft already offers traditional virtual machine products, most notably Hyper-V. In some respects, Docker containers compete with virtual machine platforms.
But that's not necessarily the case. Depending on how they're used, containers can complement virtual machines, rather than replace them. If you use virtual machines to host the environment in which Docker runs, your Docker environment becomes more scalable and portable than it would be if it ran on bare metal. That's likely the type of use case Microsoft envisions for containers on Windows.
Viewed from this perspective, Microsoft's Docker play is neither a frivolous flirtation with a technology that the company has no serious interest in supporting, nor a silly endeavor that will end with Redmond shooting its own foot. Although there remains work to do to get Docker on Windows ready for prime time, the platform will be important in helping Windows Server stay as nimble as Linux environments in hosting the workloads of the future.