Tuesday, November 8, 2016

Considerations for Running Docker for Windows Server 2016 with Hyper-V VMs [feedly]

Considerations for Running Docker for Windows Server 2016 with Hyper-V VMs

-- via my feedly newsfeed

We often get asked at Docker, "Where should I run my application? On bare metal, virtual or cloud?" The beauty of Docker is that you can run a container anywhere, so we usually answer this question with "It depends." Not what you were looking for, right?

To answer this, you first need to consider which infrastructure makes the most sense for your application architecture and business goals. We get this question so often that our technical evangelist, Mike Coleman has written a few blogs to provide some guidance:

During our recent webinar, titled "Docker for Windows Server 2016", this question came up a lot, specifically what to consider when deploying a Windows Server 2016 application in a Hyper-V VM with Docker and how it works. First, you'll need to understand the differences between Windows Server containers, Hyper-V containers, and Hyper-V VMs before considering how they work together.

A Hyper-V container is a Windows Server container running inside a stripped down Hyper-V VM that is only instantiated for containers.

This provides additional kernel isolation and separation from the host OS that is used by the containerized application. Hyper-V containers automatically create a Hyper-V VM using the application's base image and the Hyper-V VM includes the required application binaries, libraries inside that Windows container. For more information on Windows Containers read our blog. Whether your application runs as a Windows Server container or as a Hyper-V container is a runtime decision. Additional isolation is a good option for multi tenant environments. No changes are required to the Dockerfile or image, the same image can be run in either mode.

Here we the the top Hyper-V container questions with answers:

Q: I thought that containers do not need a hypervisor?

A: Correct, but since a Hyper-V container packages the same container image with its own dedicated kernel it ensures tighter isolation in multi-tenant environments which may be a business or application requirement for specific Windows Server 2016 applications.

Q: ­Do you need a hypervisor layer before the OS in both Hyper-V and Docker for Windows Server containers?

A: The hypervisor is optional. With Windows Server containers, isolation is achieved not with hypervisor, but with process isolation, filesystem and registry sandboxing.

Q: Can the Hyper-V containers be managed from the Hyper-V Manager, in the same way that the VM's are? (ie. turned on/off, check memory usage, etc?)

A: While Hyper-V is the runtime technology powering Hyper-V Isolation, Hyper-V containers are not VMs and neither appear as a Hyper-V resource nor be managed with classic Hyper-V tools, like Hyper-V Manager. Hyper-V containers are only executed at runtime by the Docker Engine.

Q: Can you run Windows Server container and Hyper-V VMs running Linux workloads on the same host?

A: Yes. You can run a Hyper-V VM with a Linux OS on a physical host running Windows Server.  Inside the VM, you can run containers built with Linux.

Next week we'll bring you the next blog in our Windows Server 2016 Q&A Series – Top questions about Docker for SQL Server Express. See you again next week.

For more resources:

Top considerations for running #Docker @WindowsServer #container in #Hyper-V
Click To Tweet

The post Considerations for Running Docker for Windows Server 2016 with Hyper-V VMs appeared first on Docker Blog.