That's very exciting news. I still find somewhat confusing to execute "RUN" instructions, as they're much cleaner in Linux, but I need to dig the documentation. However there is a line that caught my attention:
> This flexibility comes at the cost of some bulk: The `microsoft/windowsservercore` image takes up 10GB.
Hope next versions shrink the image size.
> And the Nano Server base image is an order of magnitude smaller than Windows Server Core, meaning it has less dependencies and surface area to keep updated.
I wonder how smaller it is. Do you have any estimate here?
What's the storage backend being used on Windows? With even an 800MiB base, let alone 10GiB, I'm curious what happens when creating 100 containers from that base? On Linux, whether the backend is device mapper (thin), overlayfs, or Btrfs, the snapshots are fast and the cost is only the change from the base.
Docker running on Windows comes with the same layering and CoW semantics as on Windows. If you're curious about the details, John Starks' session at DockerCon is really great: https://www.youtube.com/watch?v=85nCF5S8Qok
I was excited about the possibilities, until I came to this:
> The Windows Server Core image comes with a mostly complete userland with the processes and DLLs found on a standard Windows Server Core install. With the exception of GUI apps and apps requiring Windows Remote Desktop, most apps that run on Windows Server can be dockerized to run in an image based on microsoft/windowsservercore with minimal effort.
RDP actually worked in early tech previews, and I think Microsoft is trying to use some of this for browser-process isolation in Microsoft Edge, so maybe some day :-)
Will this work on Windows Home editions (that ship on almost every laptop you buy at MicroCenter / Best Buy / etc) or will it require Pro versions because it has some underlying dependency on Hyper-V?
On Windows 10 you need hyper-v to run windows container. So only pro and enterprise.
On Windows Server 2016, you can choose between hyper-v container or "native" container, but this is only possible thanks to a new architecture that is not present in W10 (hence why you need Hyper-V).
I guess the "for Windows Server 2016" part answers the question :) however you might be asking about Docker for Windows, which seems to be a different thing?
Did you even read the article before you posted your snotty retort?
> The kernel containerization features are available in all versions of Windows Server 2016, and are also on --> Windows 10 systems with the Anniversary Update <--, and the Windows-native Docker daemon runs on both Windows Server 2016 and --> Windows 10 <-- (although only containers based on Windows Server build and run on Windows 10).
Is the code for launching Windows containers open source yet? I'm not familiar with the Docker codebase, but a quick search didn't turn up anything except configuration-related stuff. I'm especially interested in how Hyper-V isolation and layering is implemented.
My hope is they at least get LSW (Linux Subsystem for Windows) at least to the point where Linux containers can build/run in windows. When I tried it a couple months ago, I was very disappointed in the weirdness with filesystem access from the GUI.
It should be good enough for docker usage, and am excited about that option.
There seem to be no current plans to ship LSW on Windows Server though, so it does not seem to be going to happen soon. Also LSW has a lot of bug fixing before it is ready for that.
Is there any plan to have docker for windows containers and docker for windows use a different socket? At the moment, both trample on each other, and there are times when I'd like to use them together.
> To build and run a Windows container, a Windows system is required. While the Docker tools, control APIs and image formats are the same on Windows and Linux, a Docker Windows container won’t run on a Linux system and vice-versa.
No, this is for running containers using the Windows kernel.
Although with the Windows Subsystem for Linux (WSL), I wonder how long until Windows Server supports running Linux containers.
I just wonder about the utility of all this. Most people should be trying to target .NET Standard/.NET Core and simply run their apps on Linux, meaning they can use regular Linux distributions with Docker installed. Who is Microsoft expecting to actually use Docker on Windows?
EDIT: I'll answer my own question and say that this is probably targeted toward shops that rely on a Microsoft stack (e.g., full .NET Framework, SQL Server, etc.) Running Docker on Windows and getting fully-configured environments should be a big boon to productivity for these folks.
Using Docker you can already run Linux containers on Windows, using native virtualization in Hyper-V. You are correct however this announcement is specifically about windows containers.
> While the Docker tools, control APIs and image formats are the same on Windows and Linux, a Docker Windows container won’t run on a Linux system and vice-versa.
> This flexibility comes at the cost of some bulk: The `microsoft/windowsservercore` image takes up 10GB.
Hope next versions shrink the image size.
> And the Nano Server base image is an order of magnitude smaller than Windows Server Core, meaning it has less dependencies and surface area to keep updated.
I wonder how smaller it is. Do you have any estimate here?