Analysis Containers are all the rage with Linux sysadmins these days, and now Microsoft and Docker say they're going to bring that same virtualization-beating goodness to Windows. But just what will that look like and how will it work?
First things first. One thing Microsoft's new partnership with Docker won't let you do is take any of the estimated 45,000 containers in the Docker Hub today and run them on Windows. Unlike virtualization, containers don't let you run Linux on top of another OS, which is what you'd need to do to launch all of those prepackaged Linux binaries.
Instead, what containerization lets you do is launch multiple applications that share the same OS kernel and other system resources but otherwise act as though they're running on separate machines. Each is sandboxed off from the others so that they can't interfere with each other.
What Docker brings to the table is an easy way to package, distribute, deploy, and manage containerized applications. This is especially handy for what Docker terms "cloud native" apps, where instead of deploying servers loaded with monolithic application stacks, admins spin up multiple "microservices" on virtual machine instances that then combine to form the complete product.
"If you look at the new modern web startups like Netflix or Yelp or Gilt Groupe or Groupon, they're all developing applications differently," Scott Johnston, Docker's senior VP of product, told The Reg in a briefing on Wednesday. "They're developing discrete components that are then aggregated together to create the final service that the consumer or the web browser sees."
That kind of agile service management is precisely what Microsoft wants its customers to be able to do on Windows. Or, as Ross Gardler, senior technology evangelist for Microsoft Open Technologies put it to El Reg, "It's attractive to customers of Microsoft so, yes, it's attractive to Microsoft."
Windows: It just can't contain itself ... yet
While containers and Docker have become virtually synonymous in the Linux world, however, it's easy to forget that Docker didn't invent containers. Its software runs on top of a number of other, preexisting technologies, including Linux Containers (LXC) and the cgroups and namespaces capabilities built into the modern Linux kernel.
So if Docker relies on features that are specific to Linux, how is it going to run on Windows? The answer is that Microsoft is going to have to build similar capabilities into its OS, which it says will arrive in the next version of Windows Server.
It ain't Hyper-V but it might be something better: Microsoft wants in on Docker containers
Just how Windows Server containers will function, however, Redmond isn't saying for now – although Gardler said Microsoft has been keeping the technology in its back pocket for several years.
"There aren't any container technologies in Windows that ship to the public now, but we do have some internal works that we've been doing," he explained. "Since around about 2005 we've been running containerized applications on our own platforms internally, and so we have a lot of experience with containers."
That's not so far-fetched. Containerization wasn't invented for Linux, either. Similar technologies, such as Solaris Containers and FreeBSD Jails, have been around for years.
In fact, Microsoft Research has been running an experimental project called "Drawbridge" that enables a similar kind of application virtualization. Interestingly, however, veteran Redmond snoop Mary Jo Foley says her sources deny that Drawbridge will form the basis of this new Windows container tech.
What Microsoft has said is that the containers will support running applications built using both .Net and other application types, including apps written in C++, Java, Node.js, and so on. What's more, Redmond is committed to ensuring that Windows Server containers will be manageable using the same Docker tools that Linux admins use to deploy and manage containerized applications today.
"Microsoft is going to be contributing as appropriate, as necessary, to the Docker community to ensure that the APIs used within Windows Server for managing these applications are compatible with the open orchestration APIs that the Docker community are defining," Gardler said.
Linux and Windows: Pals in the cloud
According to Docker's Johnston, what makes this exciting is that application builders will be able to create heterogeneous distributed apps where microservices can run on either Linux or Windows hosts – whichever is appropriate for each service – yet they can all still be managed using the same tools.
"Dockerized Windows apps will run on Windows hosts and Dockerized Linux apps will still run on Linux hosts," Johnston told El Reg. "But the collection of apps that constitute a distributed application or a distributed service can absolutely interoperate with each other."
Docker's tools will let you manage Linux and Windows containers interchangeably – or that's the idea, anyway
And since we're talking about cloud native apps, Microsoft is also planning to integrate Docker with its Azure public cloud. That process began in June, when it added new features to its Azure command-line tools that made it easier to deploy Docker containers to Linux VMs running on Azure. With this new partnership, it also plans to let Docker users do it the other way around.
"Within the Docker command-line itself there'll be support for deploying the appropriate VMs onto Azure," Gardler said. "So all you would have to do is run a single command and the Docker client tools will decide whether it needs to be a Linux virtual machine or it needs to be a Windows virtual machine, and it will fire it up as appropriate in Azure."
That functionality, incidentally, will come from code contributions by Microsoft Open Technologies, the subsidiary Redmond spun off to allow it to commingle with the open source community while firewalling off its own intellectual property.
Johnston told us that Docker has been talking to Microsoft throughout the year about how to make the partnership work going forward, and that it will be a two-way effort. The companies will work on the Docker Engine for Windows as an open source project, with each firm's engineering team contributing its expertise about its own products.
What remains, then, is when Windows containerization tech will arrive in customers' hands. We know it won't come with Windows 10 – Gardler said Microsoft is positioning containers as a server-only tech – but we're told we can expect it to come in the next iteration of Windows Server, whenever it arrives.
"The exact date we don't know, it will be in the next wave of Windows Server and we will be including it in a forthcoming preview release of Windows Server," Gardler said. ®