Docker Community Forums

Share and learn in the Docker community.

Limitations of Windows Server 2016 Standard

According to this article https://blogs.technet.microsoft.com/ausoemteam/2017/03/03/comparison-of-standard-and-datacenter-editions-of-windows-server-2016/, Windows 2016 Standard has limitations of:

  • 2 virtual machines, plus one Hyper-V host per license
  • Container support (Windows containers unlimited; Hyper-V containers up to 2)

I am a little bit confused on how this relates to Docker. Let’s say I am going to run Linux containers on Windows, which as we know creates a MobyLinux Hyper-V VM. If I then run 10 Docker containers, am I violating the Windows 2016 Standard licensing? Do Docker containers have any relationship to Hyper-V containers mentioned above?

Thanks for any input on this subject.

I have the same question around running a bunch of linux containers on Windows 2016. Can someone from the docker team please clarify?

Preliminary info:
Docker is available in three tiers:

  • Docker Engine - Community (aka Docker CE) - > Runs on Windows Client (Windows 10 and other client OSes)
  • Docker Engine - Enterprise (aka Docker EE) -> Runs on Windows Server ( Long Term Service Channel (LTSC) - 2016 and 2019 (Core and GUI), Semi-annual Channel (SAC) - 1709, 1803 and 1809 and Linux server OSes)
  • Docker Enterprise (aka Docker EE with licensing) -> Same as Docker EE with Enterprise licensing

Windows Containers:
Windows Containers can run in two isolation modes: Process (which is similar to Linux Containers), and Hyper-V

  • Process Container (aka Windows Container): it shares a kernel with the specific container host in question and, in fact, all the containers running on that host share the host’s kernel.

  • Hyper-V Container: based on the Windows Nano Server image. Hyper-V Containers expand on the isolation that is provided by Windows Server Containers by running each container in a highly-optimized virtual machine, so that they provide a full secure isolation. The kernel of the container host is not shared with other Hyper-V Containers

  • If you intend to run the container with Hyper-V isolation, The Hyper-V role must be installed on the host first. (https://hub.docker.com/_/microsoft-windows-servercore)

Windows Server licensing regarding Containers:

  • Windows Server 2016 Standard: Windows containers unlimited; Hyper-V containers up to 2

  • Windows Server 2016 Datacenter: all container types unlimited

This is because Hyper-V isolated containers actually uses the Hyper-V role while Windows Containers (Process isolated) does not.

If no isolation value is specified on daemon start, on Windows client, the default is hyperv , and on Windows server, the default is process

Linux Containers is not officially supported on Windows Server, only on Windows 10. MobyLinux installs with Docker Desktop (Windows 10). If you hack it onto Windows Server, then you will need to run the container in hyper-v isolation for it to run. Once running in that mode, the amount of hyperv isolation instances is limited by the host’s edition that is installed.