When I spent time with Microsoft execs in Redmond last week (disclosure: Microsoft covered my travel and expenses to visit the campus), I was particularly interested to get their take on containers generally, and Docker in particular. It would be easy to think that Docker has little relevance to Microsoft; it is, after all, a Linux concept. But remember a couple of facts: Microsoft has, in recent years, built strong bridges to the open-source and Linux communities and, notwithstanding that fact, cloud infrastructure is a big part of Microsoft's future. As such, it needs to support Linux workloads on the Azure platform. For these reasons, and given Redmond's past overtures to the Docker community, I was fascinated to see what it had coming up.
One of the people I met with was John Gossman, a Partner software engineer at Microsoft. Gossman has the task of advocating for open source within Microsoft and advocating Microsoft's relevance to open source within opensource communities. This is a guy who has spent much of his career orbiting this world, so his perspective was an interesting one to hear.
As Gossman put it when I questioned him about Docker, everyone has been using containers forever. The difference between then and now, however, is that previously people saw containers as an advanced feature. Solomon Hykes, the founder of Docker, put it together in an easily consumed package. Microsoft is, as I mentioned before, interested in containers in two ways. It wants people who are using Docker to use it on Azure. At the same time, however, it also wants to bring that same usability to Windows. Gossman explained that the current leadership at Microsoft has a developer history, and hence the Docker promise of easily achieved developer enablement is attractive to them.
So with all that context, it is good to see Microsoft ramp up the delivery of real code that supports containers. The company is today releasing a third technical preview of Windows Server 2016 and System Center 2016 and, most importantly for those watching the container space, it is the first time that Redmond is releasing a preview of Windows Server Containers. Windows Server Containers create an agile Windows Server environment, enabling developers to mimic the agile, DevOps-fueled approaches that they've enjoyed with Linux for a while. With the release, Windows developers will be able to utilize containers across .Net, ASP.Net, PowerShell, Python, Ruby on Rails and Java.
Considering the historically modest pace of Microsoft's development, this is a pretty quick delivery upon the company's promise to partner with Docker in order to offer container benefits across both the Linux and the Windows Server world. Windows Server Containers are now part of the core Docker open-source project and can be deployed using either PowerShell or the Docker client.
Alongside WIndows Server Containers, Microsoft is also supporting broader container plays — containers are supported as first-class citizens on Azure, and Microsoft is contributing to the development of Docker Engine for Windows Server. This extension to the engine will allow the Docker client to manage multicontainer applications using both Linux and Windows containers, regardless of the hosting environment or cloud provider.
All of this is important when we consider the vast breadth of the existing Microsoft franchise within enterprise development. Many people propose that containers herald the future of enterprise IT, but for existing enterprises with sunk costs and legacy applications, this promise of adopting containers along consistent approaches and platforms as their existing applications (which are, after all, often based around Microsoft technologies) is hugely compelling.
The Microsoft haters will look scornfully at this as an old, evil, proprietary empire trying to retain ownership over its kingdom, but more pragmatic souls would see it for what it is: a company in transition to being a more open and honest (and, yes, still commercially focused) player.