News

Microsoft Bringing Docker Containers to Windows Server

The next version of Microsoft's Windows Server product will support Docker containers, Microsoft announced on Wednesday.

Currently, Docker containers, which are designed to enable application portability using code developed as micro-services, can only run on Linux servers.

The move represents a significant milestone in Microsoft's relationship with the open source Linux community. While Microsoft has stepped up its efforts to work with Linux and other open source software over the years, Wednesday's announcement is key to enabling applications to consist of multiple container-based micro-services. Some of these containers will run on Windows, others on Linux, allowing applications to leverage either as an organization chooses or requires for individual services.

Besides making applications portable, industry watchers believe containers could someday supersede the traditional virtual machine (VM). 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 process complex computations.

Containers have existed long before Docker, particularly in the Linux community and from third parties such as Parallels, but they have always had their own implementations. Docker, which launched less than two years ago, shook the open source and computing world by releasing a 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. Microsoft said in May that it would enable Docker containers to run in its Azure Infrastructure as a Service (IaaS) cloud. The collaboration between Docker and Microsoft was a closely held secret.

During a panel at the Interop show in New York on Sept. 30 and later in an interview, Azure CTO Mark Russinovich spoke about Microsoft's work with Docker to support its containers in Azure. Russinovich alluded to Microsoft's own effort to develop Windows containers, called Drawbridge. Describing Drawbridge as an internal effort, Russinovich revealed that the container technology is in use within Microsoft internally, and is now available for customers who 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 that time, Russinovich was tight-lipped about Microsoft's work with Docker. Russinovich emphasized Microsoft's support for Linux containers on Azure and, when pressed about Drawbridge, described it as a more superior container technology, arguing its containers are more secure for deploying micro-services.

It now appears that Microsoft has been working quietly behind the scenes with Docker to enable the Docker Engine, originally architected to run only 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 Azure public cloud, accessible via the Azure Management Portal and Azure Gallery and Management Portal. This will allow cloud developers, including Microsoft's 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 infrastructures, such as on-premises servers, to cloud. It bears noting that the individual containers remain tied to the operating system from which they are derived.

The Docker Engine for Windows Server will be part of the Docker open source project, in which 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; according to Ross Gardler, senior technology evangelist for Microsoft Open Technologies, it is in the hands of the open source community. To what extent Microsoft will share the underlying Windows code is not clear. Nor would Gardler say to what extent, if any, the work from Docker will appear in this effort other than to say that Microsoft has gained deep knowledge from that project.

"This announcement is about a partnership of the bringing of Docker to Windows Server to ensure 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.

Microsoft Azure Corporate Vice President Jason Zander described the company's reasoning and plan to support Docker in Windows Server and Azure in a blog post:

"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 Hilwa said 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."

About the Author

Jeffrey Schwartz is editor of Redmond magazine and also covers cloud computing for Virtualization Review's Cloud Report. In addition, he writes the Channeling the Cloud column for Redmond Channel Partner. Follow him on Twitter @JeffreySchwartz.

Featured