// HEISE ONLINE — LINUX & OPEN SOURCE
Drei Fragen und Antworten: Mehr Effizienz und Speed mit dem neuen Docker-VMM
Die Entwicklung der neuen Virtualisierungsschicht Virtual Machine Manager hat Docker selbst in die Hand genommen. Das hat Vorteile, meint Colin Hemmings.
Docker Desktop 4.86 führt die neue, von Docker selbst entwickelte Virtualisierungsschicht Docker Virtual Machine Manager (VMM) ein. Er soll effizienter, schneller und besser zu managen sein als die bisherigen Komponenten der Betriebssysteme. Docker VMM ersetzt die bisherigen Virtualisierungen libkrun unter macOS und WSL 2 unter Windows. Colin Hemmings, Senior Product Manager bei Docker, weiß mehr über die Details und die Roadmap.
Colin Hemmings ist Senior Product Manager bei Docker Inc. und der leitende Produktmanager für den Docker Desktop.
Warum waren die bisherigen Virtualisierungslösungen nicht gut genug?
Es ging nicht darum, dass die bisherigen Virtualisierungslösungen nicht gut genug waren. Apples Virtualization.framework, WSL 2 und Hyper-V sind allesamt hervorragende Technologien, und wir haben jede bewusst ausgewählt. Darum ging es bei der jetzigen Umstellung nicht. Es ging vielmehr um die vielen Vorteile, die wir den Kunden mit der Neuausrichtung bieten können.
Die Aufgabe von Docker Desktop ist es, Entwicklerinnen und Entwicklern eine verwaltete Umgebung für die Ausführung von Containern bereitzustellen. Die VM ist dabei ein Implementierungsdetail, über das Entwickler nicht nachdenken müssen. Wie sie sich verhält, liegt vielmehr in unserer Verantwortung: Wie schnell sie startet, wie viel sie vom Rechner beansprucht und wie sie unter Last standhält. Docker hatte den Großteil dieser Umgebung bereits aufgebaut, einschließlich LinuxKit für das VM-Image sowie unsere eigenen Dienste für Netzwerk und Dateifreigabe. Das einzige wesentliche Bauteil, das wir bisher nicht selbst entwickelt hatten, war der zugrunde liegende VMM.
Jetzt, durch die neue Eigenentwicklung, können wir den VMM speziell für Container-Workloads tunen und diese Verbesserungen unserem eigenen Zeitplan folgend ausliefern. Außerdem verfügen wir dann über eine einheitliche Virtualisierungsschicht für macOS, Windows und Linux. So ist deren Verhalten unabhängig von den Arbeitsumgebungen der Entwickler konsistent. Das schafft uns eine Grundlage, auf der wir weiter aufbauen können.
Außerdem konnten wir ein paar konkreten Verbesserungen erzielen, zum Beispiel einen messbar schnelleren Start von Containern, und zwar sowohl beim ersten Start, als auch beim Projektwechsel und bei der Wiederherstellung nach einem Neustart. Der deutlich schnellere Dateiaustausch zwischen Container und Host beschleunigt jeden Build. Und die intelligentere Speicherverwaltung gibt dem Host RAM zurück, wenn Container im Leerlauf sind. Speicher ist ein gutes Beispiel für die Vorteile: VMM nutzt die Funktion Free Page Reporting, mit der ein Gastkernel kontinuierlich die von ihm freigegebenen Pages meldet, sodass wir diesen Speicherplatz fortlaufend dem Host zurückgeben können. Der Footprint von Desktop entspricht der wirklichen Nutzung der Container.
Aus technischer Sicht wurde Docker VMM von Grund auf in Rust geschrieben und läuft direkt auf der nativen Hypervisor-Schnittstelle der jeweiligen Plattform. Das ist Hypervisor-Framework unter macOS, der Windows Hypervisor und KVM unter Linux – nur eine Codebasis für alle drei. Die gleiche Engine betreibt auch Docker Sandboxes, unsere isolierten Umgebungen für Agenten und nicht vertrauenswürdige Workloads.
Bewusst eng gehalten ist das Gerätemodell. Wir implementieren nur die paravirtualisierten Geräte, die Container-Workloads tatsächlich nutzen, anstatt eine breite Palette an Hardware zu emulieren. Das sind virtio-fs für die Dateifreigabe, virtio-net für die Netzwerkkommunikation und virtio-balloon für den Speicher. Hinzu kommt nur das Minimum, das ein Linux-Gast für den Start benötigt.