What about licensing? Does the docker image manifest include machine-readable licensing metadata required for automated licence compliance verification?
What about running Docker containers on desktop/laptop machines during development? It's a major part of the Docker usecase.
Trying to keep track of Windows licensing compliance across multiple versions and deployment models is confusing enough as it is. Different sources will give different answers to the same questions when interpreting licensing scenarios, and you can never know unless you get audited (?)
Different sources will give different answers to the same questions when interpreting licensing scenarios
1.) Containers are not available on desktop SKUs. So there is no licensing consideration for Windows 10. If they later add containers to Windows 10, then they'll release licensing rules at that time.
2.) If you are running a server OS for your desktop, then the licensing is pretty clear. Hyper-v VM containers follow the same rules as normal hyper-v VMs (1 physical + 2 virtual for standard then each additional VM requires a license, unlimited for datacenter). For Windows Server Containers (which are not hyper-v based), it's even easier, it's unlimited regardless of edition.
3.) As always, the host OS must be licensed fully in order to have the appropriate rights (2016 is moving to core licensing, with a minimum of 8 core licenses per processor, and a minimum of 2 processors).
All in all, it's one of the easier features to understand the licensing for since it doesn't directly deal with CALs or internal/external usage rights.
Contrast that with the license considerations running Docker on Ubuntu:
1.) Containers are available on both desktops and servers because they're fundamentally the same OS (but with different sets of packages installed by default).
2.) As always, the server and desktop versions of Ubuntu available for unlimited use with zero licensing costs. Completely free.
I'd also like to add that the "base" Windows Server container image is 9.3 gigabytes while the base Ubuntu container image is 120 megabytes. Put it all together and you wind up with vastly greater costs to run Docker containers on Windows.
Having said that, if your application only runs on Windows then putting inside a container might not be a bad idea.
1.) and 2.), ok. As pointed out, Windows Server containers don't have any additional licensing costs above and beyond the base host OS license. Presumably, if you already paid that cost, then you feel that it's reasonable to do so.
As for the size, I have the feeling that people that are going to run windows containers as a herd are going to opt for the nano image which is 793.3 MB. Still about 6.5 times larger than the ubuntu container image you mention, but 11.5 times smaller than the servercore container image. Particularly since the nano image is focused towards individual roles (IIS, dns, etc) which work well with the 1 task per container philosophy.
All in all, I'm not sure what the value is in comparing the two solutions (that isn't already covered in the Linux vs Windows threads). You can't run Linux containers on Windows, and you can't run Windows containers on Linux (without running an actual virtualized workload). So it seems pretty clear that you choose Windows if you have Windows servers to containerize, and Linux if you have Linux servers to containerize.
Windows Hyper-V Containers are available on the Windows 10 Client, through the insiders program. This is intended for development scenarios. You can run your Windows Containers locally, building up your app/service, then deploying on servers running the Container feature. We're still early in the Windows container development efforts. http://aka.ms/DockerToolsForVS. The experience built for Linux containers will support Nano Server as well. In the current Windows insiders program, you can run Nano Server based containers locally, which you can develop .NET core apps against.
That was my first thought, too. At first sight, Windows containers seem to run only on Windows hosts.
Maybe the licensing is covered through the hosts' licencse (speculation: you can run n Windows containers if you buy license x for the host OS).
---
OSEs/Hyper-V containers
DataCenter: Unlimited
Standard: 2
----
Windows Server containers
Datacenter: Unlimited
Standard: Unlimited
---
[0] - https://www.microsoft.com/en-us/server-cloud/products/window...