I’m kinda embarrassed to ask this silly question but I do need help.
I’m very new to virtualization. I’m using vmWare on my windows laptop, which is my primary workstation and I’m using VirtualBox on my linux computers. I also know about bare metal virtualization, though never used nor needed to.
Then I heard about this virtualization type where the guest OS relies on the kernel of host OS. Hence, you can have only windows guests on a windows host and only linux guests on linux hosts. And for the very same reason it’s light-weight and pretty fast. I don’t know what it’s called; paravirtualization maybe? or “Kernel Based Virtualization”. I don’t know. I “guess” this is what all container based virtualization and docker is about?
I need this kernel based virtualization for my windows laptop to run windows guests with GUI. I installed Docker and played with it for a while but couldn’t achieve my goal.
My question is, is Docker what I’m looking for; and if it is then how do I manage to get a full windows desktop experience with it on my windows laptop.
First of all containers are not virtual machines, you will hear and read it frequently. So what you want with Docker is not possible. Windows containers don’t support GUI. It could be the end of my answer, but let’s add some more details to clear the confusion.
By searching for the term on Google, you can find the Wiki that says:
The paravirtualization provides specially defined ‘hooks’ to allow the guest(s) and host to request and acknowledge these tasks, which would otherwise be executed in the virtual domain (where execution performance is worse).
or another from What Is Paravirtualization?
Paravirtualization is a type of virtualization where software instructions from the guest operating system running inside a virtual machine can use “hypercalls” that communicate directly with the hypervisor
About Kernel based virtualization: Kernel-based Virtual Machine - Wikipedia
Kernel-based Virtual Machine (KVM ) is a free and open-source virtualization module in the Linux kernel that allows the kernel to function as a hypervisor
And Docker runs containers. Containerization sometimes referred to as virtualization which could be confusiong after you hear everywhere that it is not virtualization or as we usually say “a container is not a virtual machine”.
A container is a result of Operating System level virtualization
OS-level virtualization is an operating system (OS) virtualization paradigm in which the kernel allows the existence of multiple isolated user space instances, called containers
And you can read and hear (video at the top of the post) my explanation about Kernel namespaces: https://dev.to/rimelek/docker-network-and-network-namespaces-in-practice-5h9#linux-kernel-namespaces-in-general
A kernel namespace is like a magic wall between a running process and the rest of the host. This magic wall will only hide some parts of the host from a specific point of view.
So you won’t have a vitual machine. Processes are running on the host, but they don’t know it because the kernel don’t let them. But you can see the processes of a container from a host. That’s all and of course resource management which is another topic. You can search for control groups or CGroups.
Hmmm, so KVM is a piece of software, a module that is integrated into the Linux Kernel. Do you know if Hyper-V works the same way? …or any other software that would work the same way on Windows?
Thanks for the extended info, appreciated.
Whether KVM is similar to Hyper-V is not relevant. KVM is made for Linux and therefore it is optimized for that, while Hyper-V is for Windows hosts, but both can virtualize Windows and Linux.
Since this forum is about containers, I recommend starting a discussion in a Microsoft forum, where people can help you with finding the better way to virtualize on Windows. I mainly use Linux and as far as I know, most of us here do.
What I know is that KVM and Hyper-V is really different. If I remember correctly, when you enable Hyper-V, even the host OS will run differently, but I really don’t claim to fully understand Hyper-V. You can read about Hyper-V architecture in Microsoft’s documentation
I can also share my personal experience. I don’t have to manage Hyper-V at work, but I tried it on my machine and for my goals it wasn’t as good as VMWare Workstation which allowed me to run a single virtual machine. It was enough to me and was really fast and I could even run audio and video easily. I couldn’t do it properly on HyperV, but this is just my personal experience, not indicating that it wouldn’t be possible.
That is all I can say about this topic, but we are not talking about containers.