Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

Windows Server Containers are coming whether you like it or not

After posting giddily on Docker in the Windows world recently, Microsoft released Windows Server 2016 Technical Preview 3 with container support. I’ve had a chance to play with it a little so let’s see where this goes…

It’s a preview

Like movie previews, this is equal parts exciting and frustrating. Exciting because you get a teaser of things to come. Frustrating because you just want it to work now. And extra frustration points for various technical issues I’ve run into that, I hope, are due to the “technical preview” label.

For example, installing container support into an existing VM is mind-numbingly slow. Kudos to the team for making it easy to install but at the point where you run ContainerSetup.ps1, be prepared to wait for, by my watch, at least 45 minutes without any visual indication that something is happening. The only reason I knew something was happening is because I saw the size of the VM go up (slowly) on my host hard drive. This is on a 70Mbps internet connection so I don’t think this can be attributed to “island problems” either.

I’ve heard tell of issues setting up container support in a Hyper-V VM as well. That’s second-hand info as I’m using Fusion on a Mac rather than Hyper-V. If you run into problems setting it up on Hyper-V, consider switching to the instructions for setting up containers on non-Hyper-V VMs instead.

There’s also the Azure option. Microsoft was gracious enough to provide an Azure image for Windows Server 2016 pre-configured with container support. This works well if you’re on Azure and I was able to run the nginx tutorial on it with no issues. I had less success with the IIS 10 tutorial even locally. I could get it running but was not able to create a new image based on the container I had.

It’s also a start

Technical issues aside, I haven’t been this excited about technology in Windows since…ASP.NET MVC, I guess, if my tag cloud is to be believed. And since this is a technical preview designed to garner feedback, here’s what I want to see in the Windows container world

Docker client and PowerShell support

I love that I can use the Docker client to work with Windows containers. I can leverage what I’ve already learned with Docker in Linux. But I also love that I can spin up containers with PowerShell so I don’t need to mix technologies in a continuous integration/continuous deployment environment if I already have PowerShell scripts set up for other aspects of my process.

Support for legacy .NET applications

I can’t take credit for this. I’ve been talking with Gabriel Schenker about containers a lot lately and it was he who suggested they need to have support for .NET 4, .NET 3.5, and even .NET 2.0. It makes sense though. There are a lot of .NET apps out there and it would be a shame if they couldn’t take advantage of containers.

Smooth local development

Docker Machine is great for getting up and running fast on a local Windows VM. To fully take advantage of containers, devs need to be able to work with them locally with no friction, whether that means a Windows Container version of Docker Machine or the ability to work with containers natively in Windows 10.

ARM support

At Western Devs, we have a PowerShell script that will spin up a new Azure Linux virtual machine, install docker, create a container, and run our website on it. It goes without saying (even though I’m saying it) that I’d like to do the same with Windows containers.

Lots of images out of the gate

I’d like to wean myself off VMs a little. I picture a world where I have one base VM and I use various containers for the different pieces of the app I’m working on. E.g. A SQL Server container, an IIS container, an ElasticSearch container, possibly even a Visual Studio container. I pick and choose which containers I need to build up my dev environment and use just one (or a small handful) of VMs.


In the meantime, I’m excited enough about Windows containers that I hope to incorporate a small demo with them in my talk at MeasureUP in a few scant weeks so if you’re in the Austin area, come on by to see it.

It is a glorious world ahead in this space and it puts a smile on this hillbilly’s face to see it unfold.

Kyle the Barely Contained

This entry was posted in Docker and tagged , . Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://www.sholo.net/ scottt732

    Thanks for the info and for introducing me to Aidan Finn’s blog (lots of good stuff there). Hopefully things come together a little more by RTM. I hope MS isn’t holding off on the AD-related roles for licensing reasons.

  • Ed Grigson

    There is an MS page dedicated to application compatibility in containers;
    https://msdn.microsoft.com/virtualization/windowscontainers/reference/app_compat

    It’s also worth noting that apparently a container OS can’t join AD;
    http://www.aidanfinn.com/?p=18781

    Obviously it’s a tech preview so all of this can (and probably will) change.

  • http://kyle.baley.org Kyle Baley

    Scott,

    Nothing yet from Microsoft, but the internal discussion we had about it was pretty interesting. A summary is up here: http://www.westerndevs.com/westerndevs-learn-about-docker-part-2/

    — Kyle

  • http://kyle.baley.org Kyle Baley

    Scott,

    That’s a good question and it prompted a discussion on our http://www.westerndevs.com Slack channel. It’s too early to say whether it _will_ be supported but our general consensus is that it _could_ be supported in theory. Except for Active Directory which is likely tied too closely to the host. This is mostly conjecture but let me see if I can find out.

    — Kyle

  • http://www.sholo.net/ scottt732

    Do you know whether all of the server roles & features will be supported in containers? Specifically I’m wondering if we’ll be able to spin up AD, DNS, DHCP, ADFS, etc. in containers. I would like the ability to script the setup of these services and having replayable dockerfile would make building and testing this a lot easier. From a management standpoint, it would be nice to have other Windows-based containers able to join a domain and respect group policy. It would also be nice for prototyping/tinkering if you could host multiple ADs/forests on a single machine rather than a bunch of separate VMs.