Website-Suche

Ich habe Docker Desktop durch native Linux-Container ersetzt und nie zurückgeblickt


Docker Desktop ist unbestreitbar elegant. Die saubere Benutzeroberfläche, die Verwaltung mit einem Klick und die Abstraktion der Komplexität machen es großartig für Anfänger, aber diese Abstraktion hat ihren Preis.

Das Ausführen von Docker Desktop unter Linux ergibt wenig Sinn, weil Docker Desktop selbst eine versteckte Linux-virtuelle Maschine startet, um zu funktionieren. Ihre Container laufen also nicht wirklich auf Ihrem Rechner, sondern innerhalb einer VM. Diese zusätzliche Schicht verbraucht ständig Ressourcen und verwandelt die Fehlersuche in einen Albtraum, weshalb ich beschlossen habe, auf native Linux-Container umzusteigen und nie zurückzublicken.

Incus ist nicht einfach „ein weiterer Docker-Ersatz“

Es stammt aus einer anderen Behältertradition

Die meisten Docker-Alternativen versuchen, sich wie Docker zu verhalten. Podman hält das Image- und Befehlsmodell vertraut, nerdctl gibt containerd eine Docker-ähnliche Schnittstelle, und Rancher Desktop und ähnliche Werkzeuge verpacken lokale Kubernetes- oder Container-Runtime in etwas Zugänglicheres. Dies sind nützliche Werkzeuge, aber sie existieren immer noch größtenteils in der Welt der Anwendungscontainer.

Incus stammt aus einer anderen Linie. Es ist die gemeinschaftliche Fortsetzung des LXD-ähnlichen System-Container-Modells, was bedeutet, dass es um die Verwaltung kompletter Linux-Umgebungen herum aufgebaut ist, nicht nur um einzelne Anwendungsprozess-Images. Ein Incus-Container kann sich wie eine leichte VM anfühlen. Er hat ein Init-System, Networking, Speicher, Profile, Snapshots und eine persistente Identität. Sie können sich per SSH in ihn einloggen, Pakete installieren, Dienste ausführen und ihn wie eine kleine Maschine behandeln.

Aber lange Zeit musste ich Docker für OCI-Anwendungsbilder und Incus für Systemcontainer und VMs verwenden, aber dann begann Incus, OCI-Container zu unterstützen, und jetzt kann ich die meisten meiner Container damit ausführen.

Der OCI-Support hat die Gleichung verändert

Jetzt können Sie Docker-Images auf Incus ausführen

OCI-Unterstützung ist der Teil, der Incus als Ersatz für Docker Desktop wesentlich interessanter macht. Docker hat den Workflow populär gemacht, aber das Image-Format und das Registry-Ökosystem sind nicht mehr an die Docker Desktop-Erfahrung gebunden. Ein großer Teil dessen, was die Leute „Docker-Images“ nennen, sind tatsächlich OCI-Images, die über Registrierungen verteilt werden.

Mit Unterstützung von Incus OCI kann ich Anwendungscontainer mithilfe von Images aus Registries wie Docker Hub ziehen und ausführen. Das bedeutet, dass die praktische Lücke kleiner wird. Ich kann einen normalen Linux-Systemcontainer ausführen, wenn ich eine persistenten Umgebung benötige, und ich kann einen OCI-Anwendungscontainer ausführen, wenn ich nur den gepackten Dienst benötige.






Das ist die Veränderung, die Incus für mich verständlich machte, da meine lokale Infrastruktur beide Arten von Containern aufnehmen konnte. Ich bevorzuge OCI-Container, wenn das Anwendungsimage bereits die richtige Einheit ist. Das bedeutet, dass Nginx, Caddy, Redis, kleine Webanwendungen, Exporter, Testdienste und vorgefertigte Werkzeuge als OCI-Container laufen können. Eine Entwicklungsmaschine, eine Build-Umgebung oder ein Service-Host können als Systemcontainer laufen. VMs bleiben für Fälle verfügbar, in denen ich einen separaten Kernel oder eine stärkere Isolationsgrenze benötige.

Ich werde nicht sagen, dass Incus ein perfekter Eins-zu-eins-Ersatz für Docker Compose ist, da Compose weiterhin sehr gut darin ist, Multi-Container-Anwendungs-Stacks zu beschreiben. Das Gute ist, dass Incus nicht versucht, Compose mit einem anderen Logo zu sein. Es fühlt sich mehr wie eine lokale private Cloud mit Unterstützung für mehrere Instanztypen an, und das ist ein anderes Modell, das ein wenig Anpassung erfordert, aber der Vorteil ist, dass sich die Anpassung schnell auszahlt.

Die Web-Oberfläche lässt Incus wie eine lokale Cloud wirken

Es bietet Sichtbarkeit, ohne alles in ein Dashboard-Produkt zu verwandeln

Die Incus-Befehlszeile ist gut genug, dass man alles vom Terminal aus verwalten kann. So starte ich die meisten täglichen Arbeitsabläufe. Eine Zeit lang dachte ich, ich bräuchte nichts anderes.

Dann begann ich, die Web-Benutzeroberfläche zu verwenden. Die Weboberfläche verändert das Gefühl von Incus. Sie macht Container, VMs, Netzwerke, Speicher-Volumes, Profile und Images an einem Ort sichtbar. Man kann sehen, was läuft, die Konfiguration überprüfen, Konsolen öffnen, Snapshots prüfen und die Struktur der Umgebung verstehen, ohne fünf Befehle ausführen und die Ausgabe mental zusammenfügen zu müssen. Außerdem kann man die GPU-Passthrough mit ein paar Klicks durchführen.

Eine Web-Benutzeroberfläche ist kein Ersatz dafür, das System zu verstehen, aber sie ist sehr gut darin, das System überprüfbar zu machen. Incus gibt mir das, ohne die GUI zum Mittelpunkt der Architektur zu machen.

Mein täglicher Arbeitsablauf wurde einfacher

Der Gastgeber fühlt sich sauberer

Das erste, was mir auffiel, nachdem ich mehr Arbeit in Incus verlagert hatte, war, wie viel sauberer mein Host sich anfühlte. Ich konnte aufhören, zufällige Versionen von Datenbanken, Sprachlaufzeiten, Message Queues und Build-Abhängigkeiten direkt auf dem Laptop zu installieren. Das war natürlich schon mit Docker der Fall, aber Incus ließ lang laufende Entwicklungsumgebungen natürlicher wirken.

Zum Beispiel, wenn ich eine auf Debian basierende Entwicklungsumgebung haben möchte, muss ich keinen Dockerfile schreiben, nur um ein normales System zu simulieren. Ich kann einen Debian-Container starten, installieren, was ich brauche, einen Snapshot erstellen und ihn behalten. Wenn ich etwas kaputt mache, stelle ich den Snapshot wieder her. Wenn ich eine zweite Kopie möchte, klone ich ihn. Wenn ich gegen eine andere Distribution testen muss, starte ich ein anderes Image.

Dies ist besonders nützlich für die Infrastrukturprogrammierung und Experimente. Wenn ich das Verhalten von systemd, Netzwerkinstrumenten, Unterschiede zwischen Paketmanagern oder Dienstkonfiguration teste, macht ein Systemcontainer mehr Sinn als ein Einzelprozess-Docker-Container. Ich möchte, dass sich die Umgebung wie ein kleiner Linux-Rechner verhält, weil es normalerweise darum in dem Artikel oder Experiment geht. Docker kann in diese Rolle gedrängt werden, aber es fühlt sich immer leicht unpassend an.

Networking ist weniger mysteriös

Es ist immer noch Networking, also kann es dich immer noch bestrafen

Container-Netzwerke sind der Punkt, an dem viele „einfache“ Werkzeuge weniger einfach werden. Docker Desktop verbirgt vieles davon, besonders auf Nicht-Linux-Plattformen. Unter Linux ist die Magie weniger notwendig, aber die Gewohnheiten bleiben. Sie veröffentlichen Ports, untersuchen Bridges, fragen sich, welcher DNS-Pfad verwendet wird, und enden schließlich damit, iptables- oder nftables-Regeln zu lesen, während Sie frühere Optimismus bereuen.

Die Netzwerkarbeiten mit Incus fühlen sich expliziter an, da man verwaltete Bridges erstellen, Instanzen an Netzwerke anhängen, Geräte über Profile zuweisen, Proxy-Geräte verwenden und die Konfiguration auf eine Weise prüfen kann, die sich näher an der normalen Linux-Administration anfühlt. Es beseitigt nicht die Notwendigkeit, Netzwerke zu verstehen - und nichts Gutes tut das (ich würde sogar sagen „sollte“), aber es macht das Modell leichter verständlich, da der Container als verwaltete Instanz mit Geräten behandelt wird und nicht nur als ein Prozess mit Portzuweisungen.


Warum gehe ich nicht zurück?

Der Grund, warum ich bei Incus geblieben bin, ist nicht die Ideologie. Es ist mir egal, ein Logo durch ein anderes zu ersetzen. Mir geht es darum, eine lokale Umgebung zu haben, die schnell, überprüfbar, skriptfähig und nah an Linux ist. Incus gibt mir Systemcontainer, wenn ich kleine Linux-Maschinen brauche, und VMs, wenn Container nicht ausreichen. Diese Kombination ist schwer zu schlagen.

Docker Desktop ist für viele Menschen immer noch nützlich, insbesondere auf macOS und Windows, wo der Linux-Container ohnehin durch eine VM laufen muss. Auf Linux sehe ich jedoch keinen Sinn mehr darin, diese zusätzliche Schicht für meinen täglichen Arbeitsablauf mitzutragen. Native Linux-Container fühlen sich direkter an, und Incus macht sie verwaltbar, ohne sie zu vereinfachen.

Verwandte Artikel