Benötige ich eine CPU, die Virtuallization unterstützt, um Containerization durchzuführen?

7

Ich habe gelesen, dass Containerisierung billiger ist als Virtualisierung. Ich weiß, dass die Containerisierung weniger Ressourcen verbraucht als die Virtualisierung, da nur ein Betriebssystem und keine virtualisierte Hardware beteiligt sind.

Benötige ich jedoch eine CPU, die Virtualisierung unterstützt, um Containerisierung wie Docker auszuführen, oder kann ich eine App ohne Virtualisierung auf einer CPU ausführen, da sie eine App mit den Bibliotheken des Betriebssystems in einem Container ausführt?

leeand00
quelle
Alle modernen CPUs unterstützen irgendeine Form der Virtualisierung. Die häufigste ist, dass alle modernen Betriebssysteme virtuellen Speicher benötigen, um den bescheidenen "Prozess" zu implementieren. Alle modernen CPUs unterscheiden auch zwischen Kernel- und Benutzermoduscode. Das Ausführen der Virtualisierung ist nur eine Frage des Kernels, der den Prozess nicht beendet, wenn ein Prozess versucht, privilegierte Anweisungen auszuführen, sondern den Fehler behandelt, indem er emuliert, was in realer Hardware passieren würde.
Lie Ryan
@LieRyan leider auf x86 ist es nicht so einfach. Der Kernel-Modus auf normalem x86 unterschied sich genug vom Benutzermodus, sodass das Überfüllen von Inhalten nicht ausreicht. Zum Ausführen der Virtualisierung musste eine dyanmische Neukompilierung verwendet werden. Mit dem Start der Virtualisierung fügten Intel und AMD spezielle CPU-Modi für die Virtualisierung hinzu, um die Notwendigkeit einer dynamischen Neukompilierung zu vermeiden. Dies ist in der x86-Welt gemeint, wenn wir von einer "CPU, die Virtualisierung unterstützt" sprechen.
Peter Green
@PeterGreen: Die dynamische Neukompilierung ist die Funktion des Managers der virtuellen Maschine, keine CPU-Funktion. VT-x, AMD-v und andere Virtualisierungsfunktionen werden für die grundlegende Virtualisierung im Allgemeinen nicht benötigt, sondern reduzieren lediglich den Virtualisierungsaufwand. In jedem Fall unterstützen die meisten x86-CPUs der letzten fünf Jahre VT-x oder AMD-v, obwohl die Funktion manchmal im BIOS aktiviert werden muss.
Lie Ryan

Antworten:

9

Benötige ich jedoch eine CPU, die Virtualisierung unterstützt, um Containerisierung wie Docker auszuführen, oder kann ich eine App ohne Virtualisierung auf einer CPU ausführen, da sie eine App mit den Bibliotheken des Betriebssystems in einem Container ausführt?

Nein, Docker (und andere Containerlösungen wie LXC) benötigen keine spezielle Hardwareunterstützung. Sie sind effektiv eine erweiterte Version chroot, die Kernelfunktionen (hauptsächlich Namespaces) verwendet, um Prozessbäume von Ihrem Host und voneinander zu isolieren.

Larsks
quelle