Hacker News new | ask | show | jobs
by friism 3550 days ago
Post author here: people at Docker and Microsoft have worked on this for years. More to come during the day, also happy to answer any questions here.
9 comments

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?

If it's really a order of magnitude I'd expect it to be 1 gig.
The `docker pull` payload is 358MB: https://hub.docker.com/r/microsoft/nanoserver/tags/
It's 800MB.
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
Any plans for allowing to dockerize GUI/RDP apps?

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?
You can install the free Windows Server 2016 evaluation version in VirtualBox (which should run fine on Home). Download here: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-...
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).

No, I didn't.

However, it wasn't my intention to come across as snotty - I thought you might just missed the title, which isn't something unheard of :-)

I'm sorry if you felt I had a conceited attitude, that's not how I behave.

Docker for Windows also runs Windows containers now (in the beta channel). But it requires Windows 10 Pro, as do Windows containers.
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.
There's not a lot yet, but you can take a look at the shim used by Docker Engine: https://github.com/Microsoft/hcsshim
Any clear statement possible if all or (which?) parts of docker for Windows will be open source?
This is calling into something named "HNS"; what is that please?
This is the "host networking service", which is a new service that manages VM and container networking on Windows.
Awesome, thanks!
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.
A LOT of bug fixing... but then again, a lot of those issues may be less of an issue wrt having enough for docker/lxc container support.
Can you run IE/Edge inside a container for eg selenium/web driver testing?
GUI apps (and remote desktop use cases) is not supported for Docker Windows containers, at least not yet.
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.
How does it work? Is it a Windows container implementation that got the "Docker" branding?
Could you explain - can windows server run linux images and other way around? What about speed?
> 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.

99% of .net apps don't run on Linux yet.
Bump that up to 99.99% and you'd be right.

There are a lot of big .Net heavy-duty apps that are wedded to Windows.

There are a lot of legacy apps, and third party components that use bits of .Net that aren't in core (or mono), and unlikely to ever be there.
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.