Windows Server Containers arrive, with Docker support
For Docker lovers, Windows Server Containers can be managed from the Docker CLI, using the same commands currently used to create and run Docker containers on Linux. Or Windows Server Containers can be managed using PowerShell. As important as the bits themselves is Microsoft's general container strategy, which allows the company to remain accessible to open source and to grow its cloud business.
Microsoft took to its Server & Cloud Blog to talk about how Server Containers are shaping up, both as a Microsoft project and as a joint effort with Docker and the rest of the Open Container Initiative, or OCI (of which Microsoft is a member). Microsoft has been pushing Linux containers hard as a first-class citizen on Azure, and burnishing their appeal to developers by way of, for example, Visual Studio Tools for Docker.
The latter effort -- showing how Microsoft fits in with the rest of the container world -- is also positioned as part of the company's continued overtures toward a developer community that's open source by default. Microsoft is ensuring that Docker's command-line functionality and APIs have the same behavior on both Linux and Windows by building the Windows binaries from the exact same Go source code. Some shim code was needed to keep Docker's behavior consistent on Windows, but Microsoft has released that as open source as well.
It's not simply altruism; it's also business sense. Adding support for container-management tools like Mesos, Kubernetes, and Deis to Azure, for instance, means customers running Linux in Microsoft's cloud have reason to stay. Likewise, Microsoft's work with Canonical to support the LXD container management solution is based on the same impulse. (Mike Schutz, general manager for cloud platform marketing at Microsoft, explained in a phone conversation that this stemmed from Microsoft's existing support for Canonical's Ubuntu in Azure.)
The plot thickens with Hyper-V Containers -- a second container format Microsoft announced concomitantly with its support for Docker. Microsoft's Mark Russinovich recently explained that Hyper-V Containers are meant to provide an additional level of isolation, but can be managed with the Docker client tool set.
The development to watch for: How Microsoft reacts if a standard for high-isolation containers comes into existence. CoreOS has its own container runtime that enhances isolation on the Linux side, and if the approach engenders standardized tooling and APIs, Microsoft has already laid the right groundwork to hook into it by supporting Docker twice over.
Microsoft circled back to its main point in many contexts: The experience of deploying and managing containers is meant to be as consistent as possible, whatever the platform or ulterior motives. Docker noted this in its blog post about the Docker Engine preview release. Though some features don't work yet, such as the docker push command, this is not a matter of technical limitations: Docker engineering manager Olivier Gambier confirmed in an email that "[docker push] will be available in future releases."