Thanks to LinuxKit, Docker containers now can run anywhere. Does that mean native Windows containers are now stillborn? It’s possible.
Docker announced LinuxKit, is a tool set for building a Linux subsystem, at DockerCon 2017 in April. Because LinuxKit allows developers to build a Linux-based operating system into a Docker container, it makes it possible to run Docker containers anywhere—including on Windows, macOS and other systems not powered by a traditional Linux environment.
Windows Containers: Not a New Idea
If you’ve been following container ecosystem news for a while, you know that the ability to run Docker containers on Windows is not new. Docker has offered native support for Windows since late-summer 2016.
Since that time, however, there have been important caveats. Docker containers run natively only on Windows Server 2016 and Windows 10. They also lack some of the functionality available on Linux. Docker and Microsoft have been quiet about when native Docker support for Windows might be expanded and include more features.
LinuxKit vs. Windows Containers?
The introduction of LinuxKit leaves me wondering whether Docker is still interested in supporting native Windows containers for the long haul.
It’s important to note that LinuxKit-powered containers on Windows and native Windows containers are not the same thing. When you use LinuxKit to create a container that can run on Windows, the container will only be able to support a Linux application. In contrast, native Windows containers can host Windows applications.
For that reason, LinuxKit is not a replacement for native Docker support for Windows. However, given that Docker and Microsoft have seemed to drag their feet in expanding native Windows containers functionality, it’s a possibility that the new plan is to lean on LinuxKit to bring Docker to Windows.
The limitations of this approach—the inability to host native Windows apps inside a Docker container created with LinuxKit—may not be too severe. For now, Docker is only useful for hosting server workloads, due in no small part to the fact that there is not a good way to run a GUI application using Docker. (Sure, Docker GUI apps are possible, but clunky.) And on servers, there is less demand for running native Windows server apps inside a Docker container than there is native Linux apps.
For example, Apache and NGINX, both of which are usually run on Linux, still far outpace Microsoft products in popularity for web hosting. The story is similar in the database world, where Microsoft SQL and Access are the only Windows-centric databases on the list of top solutions.
Plus, Microsoft’s recent habit of open-sourcing some of its server and developer products, and making many of them compatible with Linux environments, is likely to make native Windows containers even less significant in the future.
For Docker, then, there might be less to gain and more to lose by continuing to invest in native Windows containers. It will be no surprise if the company now shifts its focus to LinuxKit as the key to bringing containers to Windows and everywhere else.