We know that Virtual Machines have a full OS with its own memory management installed with the associated overhead of virtual device drivers. In a virtual machine, valuable resources are emulated for the guest OS and hypervisor, which makes it possible to run many instances of one or more operating systems in parallel on a single machine (or host). Every guest OS runs as an individual entity from the host system.
We know that Docker Containers use runC (formerly known as libcontainer), which runs in the same operating system as its host. This allows it to share a lot of the host operating system resources. Also, it uses a layered filesystem (AuFS) and manages networking.
We know that Hyper-V implements isolation of virtual machines in terms of a partition. A partition is a logical unit of isolation, supported by the hypervisor, in which each guest operating system executes. There must be at least one parent partition in a hypervisor instance, running a supported version of Windows Server (2008 and later). The virtualization software runs in the parent partition and has direct access to the hardware devices. The parent partition creates child partitions which host the guest OSs. A parent partition creates child partitions using the hypercall API, which is the application programming interface exposed by Hyper-V.[9]
In this serverfault comment we read:
A Hyper-V container is something between a VM and a container, it runs it's own small copy of the chosen OS kernel, and as such behaves like a VM, and this is what enables networking. On the Windows side, it's basically like any other host running a Hyper-V VM with Linux in it.
My question is: Is a Hyper-V Container somewhere between a docker container and a virtual machine?
0 Answers