There’s starting to become a major timeline distinction between those of us in the IT industry. There are those of us who grew up in the industry with Microsoft being the evil empire and those that are coming into IT and seeing Microsoft as company embracing the very thing it said it never would and, dare I say, championing the use of open source technologies. I know I fall into the camp of having to deal with Microsoft at it’s very peak of being a closed company. Back in the days of the domination of Win32 based applications, I never could have imagined what has transpired with Microsoft in the past few years (and specifically in the last 12 months).
This brings me to a recent event I attended (Tech Field Day 12, read more about the Field Day series of events Tech Field Day). Docker was presenting and they focused a good section of their presentation about their integration of Docker into the Windows Server 2016 operating system. This isn’t a pseudo version of Docker being embedded within a virtual machine running on Windows Server 2016, this is Windows-native application! Along with this, all the full support for parts of Windows we nearly thought impossible to be able to isolate in containers, like the Windows registry.
When you ponder the common Windows application of (what should be) a bygone era, you will likely think of an application that seems bloated and have a GUI driven look and feel to it. Over the last few years, Windows applications have been going through a metamorphosis, of sorts. Similarly, to some Linux counterparts, Windows applications are starting have their monolithic parts broken off into other smaller microservices. This is starting to allow for the very same scale capabilities that we’ve been hearing about from Docker since containerization has come out of the woodworks.
However, to pull this off, one would think you’d have to break away from the GUI that seems to dominate what most people consider a “Windows application”. Docker on Windows will work with two versions of Windows 2016: Windows Server Core and Nano Server. Windows Server Core is the full version of Windows Server that is essentially missing the GUI. You can still install some sort of GUI mechanism to a Server Core installation (whether that’s VNC or Remote Desktop Protocol [RDP]). This will provide you a GUI interface to be able to interact with the applications installed onto that instance. You could easily install your tried and true SQL Server instance onto it and manage it just like it’s been managed for many years (RDP into the instance, use local MMC installation components for application management).
However, I believe the true magic with Windows and containerization is going to come in the form of Nano Server. If you, the reader, haven’t been paying attention to Microsoft technologies in the last year or two, Nano Server is a heavily refactored version of Window Server. It has a very small footprint and can only be managed remotely (the installation is stripped of GUI capabilities). Also, only the components that are necessary to the installation will be installed. When focusing on the applications in this realm, this is where Microsoft and .NET Core (along with PowerShell Core for remote management) come into the equation. By writing applications to take advantage of these new layers, you can start to see Microsoft’s vision of new application development mirror that of what Docker is trying to provide with other operating systems. The only unfortunate side effect to this is that Microsoft containers can only be ran on Windows Server 2016. So, portability to multiple Docker Engine’s, regardless of operating system, is going to be impossible for the moment.
Again, if you haven’t been paying attention to Microsoft in the last 1-2 years, this may come as a shock. I’m extremely excited to see how this plays out, especially with this partnership with Docker. Including Docker into the core of Windows Server 2016 is something that I never expected, but then again, maybe I shouldn’t be applying any legacy thinking to Microsoft these days, especially in regards to cloud technologies.