Microsoft, Docker Team Up to Bring Containers to Windows

Redmond is also working on its own container technology.

Application virtualization got a big boost from Microsoft today, as the company announced it's collaborating with Docker to bring its popular containers to Windows for the first time.

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 applications portable across Windows and Linux server environments. It also underscores a willingness to extend its ties with the open source community as a key contributor to make that happen. Currently Docker containers, which are designed to enable application portability using code developed as micro-services, can only run on Linux servers.

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've 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 Web Services Inc., Google Inc., IBM Corp., Red Hat Inc. and VMware Inc., among others. Microsoft in May said it would enable Docker containers to run in its Infrastructure as a Service (IaaS) Microsoft Azure 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, code-named "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; when pressed about Drawbridge, he described it as a superior container technology, arguing its containers are more secure for deploying micro-services.

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 Azure public cloud, accessible via the Azure Management Portal and Azure Gallery. This will allow cloud developers, including its ISV partners, to access the images. Microsoft is also contributing to Docker orchestration APIs and is aiming to enable portability of containers across applications, cloud platforms and OSes.

The Docker Engine for Windows Server will be part of the Docker open source project, in which Microsoft 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 isn't saying when it will appear. Ross Gardler, senior technology evangelist  for Microsoft Open Technologies, said that it's 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 the company has gained deep knowledge from that project.

"This announcement is about a partnership of bringing 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."

Docker Marketing VP David Messina 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 OS over time. "It's less about dependencies on the OS 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 plans 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 the Microsoft .NET Framework, ASP.NET, Windows 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.


Subscribe on YouTube