The Schwartz Report

Docker Containers Are Coming to Windows Server

In perhaps its greatest embrace of the open source Linux community to date, Microsoft is teaming up with Docker to develop Docker containers that will run on the next version of Windows Server, the two companies announced today. Currently Docker containers, which are designed to enable application portability using code developed as micro-services, can only run on Linux servers.

While Microsoft has stepped up its efforts to work with Linux and other open source software over the years, this latest surprise move marks a key initiative to help make containers portable among respective Windows Server and Linux server environments and cloud infrastructures. It also underscores a willingness to extend its ties with the open source community as a key contributor to make that happen.

In addition to making applications portable, proponents say containers could someday supersede the traditional virtual machine. Thanks to their lightweight composition, containers can provide the speed and scale needed for next generation applications and infrastructure components. Those next generation applications include those that make use of Big Data and processing complex computations.

Containers have long existed, particularly in the Linux community and by third parties such as Parallels. But they have always had their own implementations. Docker has taken the open source and computing world by storm over the past year since the company, launched less than two years ago, released a standard container that created a de-facto standard for how applications can extend from one platform to another running as micro-services.

Many companies have jumped on the Docker bandwagon in recent months including Amazon, Google, IBM, Red Hat and VMware, among others. Microsoft in May said it would enable Docker containers to run in its Azure infrastructure as a service cloud. The collaboration between Docker and Microsoft was a closely held secret.

Microsoft Azure CTO Mark Russinovich had talked about the company's work with Docker to support its containers in Azure in a panel at the Interop show in New York Sept. 30 and later in an interview. Russinovich alluded to Microsoft's own effort to develop Windows containers, called Drawbridge. Describing it as an internal effort, Russinovich revealed the container technology is in use within the company internally and is now available for customers that run their own machine learning-based code in the Azure service.

"Obviously spinning up a VM for [machine learning] is not acceptable in terms of the experience," Russinovich said during the panel discussion. "We are figuring out how to make that kind of technology available publicly on Windows."

At the time, Russinovich was tight-lipped about Microsoft's work with Docker and the two companies' stealth effort. Russinovich emphasized Microsoft's support for Linux containers on Azure and when pressed about Drawbridge he described it as a more superior container technology, arguing its containers are more secure for deploying micro-services.

As we now know, Microsoft has been working quietly behind the scenes with Docker to enable the Docker Engine, originally architected only to run in a Linux server, to operate with Windows Server as well. The two companies are working together to enable the Docker Engine to work in the next version of Windows Server.

Microsoft is working to enable Docker Engine images for Windows Server that will be available in Docker Hub, an open source repository housing more than 45,000 Docker applications via shared developer communities. As a result, Docker images will be available for both Linux and Windows Server.

Furthermore, the Docker Hub will run in the Microsoft Azure public cloud, accessible via the Azure Management Portal and Azure Gallery and Management Portal. This will allow cloud developers including its ISV partners to access the images. Microsoft also said it will support Docker orchestration APIs, which will let developers and administrators manage applications across both Windows and Linux platforms using common tooling. This will provide portability across different infrastructure, such as on-premises servers to cloud. It bears noting the individual containers remain tied to the operating system they are derived from.

The Docker Engine for Windows Server will be part of the Docker open source project where Microsoft said it intends to be an active participant. The result is that developers will now be able to use preconfigured Docker containers in both Linux and Windows environments.

Microsoft is not saying when it will appear, noting it is in the hands of the open source community, according to Ross Gardler, senior technology evangelist for Microsoft Open Technologies. To what extent Microsoft will share the underlying Windows code is not clear. Nor would he say to what extent, if any, the work from Docker will appear in this effort other than to say the company has gained deep knowledge from that project.

"This announcement is about a partnership of the bringing of Docker to Windows Server to insure we have interoperability between Docker containers," Gardler said. "The underlying implementation of that is not overly important. What is important is the fact that we'll have compatibility in the APIs between the Docker containers on Linux, and the Docker container on Windows."

David Messina, vice president of marketing at Docker, said the collaboration and integration between the two companies on the Docker Hub and the Azure Gallery, will lead to the merging of the best application content from both communities.

"If I'm a developer and I'm trying to build a differentiated application, what I want to focus on is a core service that's going to be unique to my enterprise or my organization and I want to pull in other content that's already there to be components for the application," Messina said. "So you're going to get faster innovation and the ability to focus on core differentiating capabilities and then leveraging investments from everybody else."

In addition to leading to faster development cycles, it appears containers will place less focus on the operating system over time. "It's less about dependencies on the operating system and more about being able to choose the technologies that are most appropriate and execute those on the platform," Microsoft's Gardler said.

Microosft Azure Corporate VP Jason Zander described the company's reasoning and plan to support Docker in Windows Server and Azure in a blog post. Zander explained how they will work:

Windows Server containers provide applications an isolated, portable and resource controlled operating environment. This isolation enables containerized applications to run without risk of dependencies and environmental configuration affecting the application. By sharing the same kernel and other key system components, containers exhibit rapid startup times and reduced resource overhead. Rapid startup helps in development and testing scenarios and continuous integration environments, while the reduced resource overhead makes them ideal for service-oriented architectures.

The Windows Server container infrastructure allows for sharing, publishing and shipping of containers to anywhere the next wave of Windows Server is running. With this new technology millions of Windows developers familiar with technologies such as .NET, ASP.NET, PowerShell, and more will be able to leverage container technology. No longer will developers have to choose between the advantages of containers and using Windows Server technologies.

IDC Analyst Al Hilwasaid in an e-mail that Microsoft has taken a significant step toward advancing container technology. "This is a big step for both Microsoft and the Docker technology," he said. "Some of the things I look forward to figuring out is how Docker will perform on Windows and how easy it will be to run or convert Linux Docker apps on Windows."