In a nutshell, I’m seeking direction and a way out of the fog of so many seemingly contradictory blogs regarding containers and VMs. No doubt I’ve missed some things that might be on this site but I have plowed through a lot of the Docker docs and am managing some containers now. Many Docker blogs are adamant about the advantages of containers not being VMs yet Docker for Windows relies on Hyper-V which according to this blog comes at a 9-12% (documented here: https://www.stratoscale.com/blog/containers/running-containers-on-bare-metal/ ) hit despite all the kudo to it regarding how lightweight it is. Questions are embedded inline but in bold.
I did find one great blog in the area referring to Native Windows Containers and the available windows approaches for hosting containers here: https://sreeninet.wordpress.com/2017/05/13/docker-for-windows-different-modes/
I’ve been confused by many blogs about containers not being VMs despite Docker for Windows using Hyper-V and forgoing the highly vaunted kernel sharing advantages. Performance and resource consumption should be considerations. I was at a crossroads, trying to decide whether to use Windows Hyper-V -based container or containers for SQL Server and ASP-dot-Net Core for Linux
Is it fair to say that Native windows containers for W2K16 will perform better than those based on Hyper-V? Nothing I read seems able to admit this yet it seems to be the direction. If these are improvements then prior approaches have shortcomings that can’t be wished away.
I have Hyper-V installed on my Windows 10 pro machine and am running a Docker for Windows CE Edge version 17.03.1-ce-rc1-win3 (10625). I use the taskbar Docker switch function to switch between Linux and Windows container development but can only see a MobyLinux Hyper-VM in the Hyper-V Manager application. When I switch to Windows container development and run the hello-world app from a window container I see no Hyper-V VM for any windows OS in the Hyper-V Manager app.
So, am I to assume that the Container being used in this case is a native windows container? I’ve been very puzzle by all the contradictory information I see regarding native vs. VM-based containers.
Can anyone comment, or better still, point me at other sources of information that can clear up such confusion? I’m not sure how to plow through all the release notes to understand whether a given release supports the Windows Native Containers referred to in second link above. Surely there must be some solid information on this topic somewhere. It would be a large waste of time to go down the wrong path then reverse course. I’m not averse to running Linux containers but I’d rather take the approach that provides the best performance.
Also, does anyone know whether ASP-dot-.Net Core builds can be provisioned for Linux containers? I suspect the answer is yes. That’s what I plan to focus on next after settling on the best alternative for Docker containers. I do also have W2K16 running in Hyper-V so if there are any W2K16 advantages (such as Windows Native Containers) only possible on W2K16 that is possible too. Would running Docker in W2K16 under Hyper-V be viable? Is that commonly done?
Many thanks for some feedback and guidance. I’m not looking for detail, just high level direction.