This content is part of the Essential Guide: A guide to Microsoft Windows Server 2016

Essential Guide

Browse Sections

Windows containers a reality through Hyper-V nested virtualization

Microsoft ushers in the use of containers by developing nested virtualization on the Windows Server 2016 platform.

In 2016, one term you will hear more of is Hyper-V nested virtualization. Not just because it's a new feature coming in Hyper-V Server 2016, but also because of the implications it has on another technology that is becoming more popular.

In virtualization, a hypervisor runs atop the physical hardware and virtual machines (VMs) run on top of that hypervisor. Nested virtualization allows a VM to host another VM. For a long time -- at least in the Windows Server and Hyper-V world -- just this type of virtualization was possible.

But now in Windows Server 2016 Hyper-V, the server role can run in a VM to host other Hyper-V VMs, adding that second -- or nested -- layer of virtualization. Nested virtualization has been supported within other hypervisors for a long time, namely VMware. Adding this feature to Windows Server 2016 does not represent a technological breakthrough, but rather a tightening of the feature gap between other virtualization offerings and Hyper-V Server 2016.

Nested virtualization has a few benefits. Organizations can more easily deploy complex networking and server infrastructure testing and demonstration environments to keep the production network from being used for operational experiments. Also, training environments have an even better way of simulating production deployments because a VM hosting the simulation or test can deploy guest VMs within itself.

Hyper-V nested virtualization paves way for containers

The top benefit to Hyper-V nested virtualization is support for containers, which have become quite popular over recent months. Containers present a new take on VMs with less overhead and more flexibility to develop and deploy applications.

The top benefit to Hyper-V nested virtualization is support for containers, which have become quite popular over recent months. Containers present a new take on VMs with less overhead and more flexibility to develop and deploy applications.

Containers are a new type of VM that in some ways have less isolation than a traditional VM. Resources that are common to all the containers running on a host are shared -- operating system files, directories and running services. This allows for greater efficiency; if you're running three different containers on a host that all run the same version of Windows Server as guests, you only need one copy of the Windows directory. This sharing reduces overhead and makes containers more lightweight. You have more headroom per server to run containers as opposed to running traditional VMs, which are more isolated and do not share anything and tend to have much more duplication.

What containers mean for administrators

Containers benefit the Windows administrator in several ways. Perhaps most prominently, containers provide a mental framework around which developers can come closer to the actual operation of the code. This means developers can not only code an entire application but also build a custom version of the environments the code requires to run. Developers build container images which are then shipped over to administrators. Containers are run essentially as they are -- as guests on that host -- and updates can be handled quickly and easily in the same way.  Each of these container images might even work on a very small part of the overall application, which componentizes the application and makes it easier to work in a microservices-oriented environment.

From an elevated perspective, working with containers increases the accountability for developers to write good code that works exactly within their environment. Using containers decreases the friction between operations and IT -- with their pristine server environments -- and developers who expect certain configurations but often lacked the ability or the rationale to change production environments to fit those expectations. Administrators spend less time figuring out if code is not working based on the server configurations and more time managing the overall infrastructure and platform.

How to manage containers

Microsoft's container management story has centered on using Docker's application program interfaces (APIs) and other tools. Windows Server containers are part of the overarching Docker open source project, and Windows Server containers are generally thought to be the functional equivalent of a Docker container. Once Windows Server 2016 is released, one could anticipate that Docker tools and utilities would manage Windows Server containers. For now, there is a collection of PowerShell commands for this, but clearly more work will be done in this area.

So how does Docker fit into this? Docker provides a "management layer" of APIs and engines to control containers that have quickly become an industry standard. Docker is open source and widely used. The Docker Hub, available for use by anyone, is a true marketplace style repository of applications that run within Docker-style containers.

VMware has a wide lead on supporting containers. It has a well thought out offering called vSphere Integrated Containers that also works alongside Docker. These tools are available and much more mature than Microsoft's tools at this point; however, they only work with Linux containers.

Next Steps

What hardware do you need for Hyper-V 3.0?

Predictions for virtualization in 2016

How containers differ from traditional virtualization

Dig Deeper on Windows administration tools