Lassen Sie mich versuchen, diese nicht ganz einfache Frage zu beantworten.
Es gibt zwei Arten von Hypervisoren, wie von Wikipedia zusammengefasst :
Typ-1, native oder Bare-Metal-Hypervisoren
Diese Hypervisoren laufen direkt auf der Hardware des Hosts, um die Hardware zu steuern und Gastbetriebssysteme zu verwalten. Aus diesem Grund werden sie manchmal als Bare-Metal-Hypervisor bezeichnet.
Typ-2 oder gehostete Hypervisoren
Diese Hypervisoren laufen auf einem herkömmlichen Betriebssystem (OS) wie andere Computerprogramme.
Hyper-V ist Typ 1, dh es wird bei der Installation zum Computer. Durch die effektive Installation der Hyper-V-Funktion wird die installierte Windows-Version lediglich zu einer virtuellen Maschine, der jedoch 100% der Hardwareressourcen zugewiesen sind.
VirtualBox und VMWare für Windows sind Typ 2, was bedeutet, dass sie unter Windows als normale Programme arbeiten, bei denen CPUs als Threads emuliert werden. Theoretisch könnte dies auch unter einem Typ 1-Hypervisor wie Hyper-V ausgeführt werden.
Das Problem tritt auf, wenn die Hardware-Virtualisierungsunterstützung für die Emulation unterschiedlicher CPUs verwendet wird, nämlich Intel VT-x und AMD-V. Eine solche Hardware wird zum Emulieren einer 32-Bit-CPU auf einem 64-Bit-Computer benötigt.
Hardware-Virtualisierung kann nur einen Eigentümer (oder Benutzer) haben. Das bedeutet, dass jeweils nur ein Hypervisor es verwenden kann, und zwei Typ-2-Hypervisoren, die auf demselben Computer ausgeführt werden, können nicht verwendet werden.
Außerdem handelt es sich speziell für den genannten Docker nicht um einen Hypervisor. Wie Wikipedia erklärt:
Docker ist ein Computerprogramm, das eine Virtualisierung auf Betriebssystemebene durchführt, die auch als "Containerisierung" bezeichnet wird.
Docker führt keine CPU- oder Geräte-Emulation aus, liefert jedoch eine dünne Schicht zum Übersetzen von auf Container basierenden Betriebssystemaufrufen in Host-Betriebssystemaufrufe. Die Anzahl der Container ist sehr begrenzt, da sich ihr Betriebssystem vom Hostsystem unterscheiden kann, da es für eine einfache und leichte Übersetzung der Aufrufe ähnlich genug sein muss. Docker steht daher bei der Hardware-Nutzung nicht in Konflikt mit Hypervisoren.