Windows Server 2019 – Containers and Nano Server

How to install Chocolatey on Windows 10

This topic wraps us back around to our discussion about Nano Server and why it has partially disappeared as a Windows Server installation option. Before discussing the purpose that Nano Server now serves, let’s take a quick look at the structure of a Windows-based container. Here is a graphic borrowed from a public slide deck that was part of a Microsoft Ignite presentation:

The lowest layer of a container is the base operating system. When spinning up a container, you need a base set of code and kernel from which to build upon. This base operating system can be either Server Core or Nano Server.

The next layer of a container is the customization layer. This is where the technologies that will ultimately be used by your application reside. For example, our containers may include IIS for hosting a website, PowerShell, or even something such as .NET. Any of these toolsets reside in this layer.

Finally, the top slice of the container cake is the application layer. This, of course, is the specific app that you plan to host inside this container, which your users are accessing.

While Server Core is a great operating system for building small and efficient servers, it is still a heavyweight compared to Nano Server. Nano is so incredibly different, and so incredibly tiny, that it really isn’t a comparison. You probably remember earlier where we installed Server Core and came out with a hard drive size of around 6 GB. While that is much smaller than a Desktop Experience version of Windows Server, think about this. A Nano Server base image can be less than 500 MB!

That is amazingly small. Additionally, updates to Nano Server are expected to be few and far between. This means you won’t have to deal with monthly patching and updates on your application containers. In fact, since containers include all that they need in order to run the applications hosted on them, it is generally expected that when you need to update something about a container, you’ll just go ahead and build out a new container image, rather than update existing ones. If Nano Server gets an update, just build out a new container, install and test the application on it, and roll it out. Need to make some changes to the application itself? Rather than figuring out how to update the existing container image, it’s quick and easy to build out a new one, test it outside of your production environment, and once it is ready, simply start deploying and spinning up the new container image into production, letting the old version fall away.

Nano Server is now only used as a base operating system for containers. This is a major change since the release of Server 2016, when the scope that Nano was expected to provide was much larger. If you are utilizing Nano Server for workloads outside of container images, you need to start working on moving those workloads into more traditional servers, such as Server Core.

You may be wondering, “Why would anybody use Server Core as the base for a container image, if Nano Server is available?” The easiest answer to that question is application compatibility. Nano Server is incredibly small, and as such it is obviously lacking much of the code that exists inside Server Core. When you start looking into utilizing containers to host your applications, it’s a great idea to utilize the smaller Nano Server as a base if possible, but often your applications simply won’t be able to run on that platform and in these cases, you will be using Server Core as the base operating system.

Comments are closed.