Community-Lösung

Ubuntu oder Debian auf ZimaOS: Warum ein Basis-Docker-Image stoppt und wann ZVM verwendet werden sollte

An October 2025 ZimaOS 1.5.0 thread where a user entered ubuntu:latest into Install a customized app, but the container would not stay running. Community replies explained the difference between a Docker app and a standalone Debian/Ubuntu virtual machine, and suggested ZVM or a proper Compose service.

Die Eingabe ubuntu:latest in das Feld „Eine benutzerdefinierte App installieren“ von ZimaOS einzugeben, erstellt nicht automatisch einen kleinen, ständig verfügbaren Ubuntu-Server. Das Image ist ein minimales Ubuntu-Container-Dateisystem und keine vorkonfigurierte virtuelle Maschine mit vollständiger Startsequenz, SSH-Daemon, Dienstverwaltung und einer bereits im Hintergrund laufenden Anwendung.

Dieser Unterschied erklärt den Ausgangsfall aus Oktober 2025. Das Image konnte heruntergeladen und ein Container erstellt werden, aber es blieb nicht so aktiv, wie der Benutzer erwartet hatte. Die richtige Lösung hängt vom eigentlichen Ziel ab: eine einzelne Anwendung in einem Container auszuführen oder ein vollständiges Debian-/Ubuntu-Betriebssystem in einer VM zu betreiben.

Ein Docker-Container ist keine kleine virtuelle Maschine

Eine virtuelle Maschine emuliert eine vollständige Computerumgebung und startet ihren eigenen Betriebssystem-Stack. Ein Container verwendet den Linux-Kernel des Hosts gemeinsam und führt einen oder mehrere isolierte Prozesse in seinem eigenen Benutzerbereich aus.

Das Modell von Docker konzentriert sich auf den Hauptprozess des Containers. Wenn der Vordergrundprozess beendet wird, wird auch ein Container im Hintergrund beendet. Container werden daher normalerweise um einen langfristig laufenden Dienst herum aufgebaut, etwa einen Webserver, eine Datenbank, einen Synchronisierungs-Daemon oder einen Anwendungs-Worker.

Offizielle Ubuntu- und Debian-Images sind minimale Basis-Images

Das aktuelle offizielle Ubuntu-Image basiert auf dem minimalen Root-Dateisystem von Canonical, und Docker beschreibt es als minimale Installation und nicht als vollständige VM-Appliance. Das offizielle Debian-Image verwendet ebenfalls ein minimales Minbase Root-Dateisystem.

Wenn Sie eines davon interaktiv mit einem Terminal starten, wirkt es wie eine kleine Linux-Umgebung, da Sie eine Shell erhalten. Sobald diese Shell beendet wird, läuft möglicherweise kein verbleibender Vordergrunddienst mehr, der den Container aktiv hält.

Nutzen Sie die aktuellen Informationen zum offiziellen Ubuntu-Basis-Image oder die aktuellen Informationen zum offiziellen Debian-Basis-Image, bevor Sie eines davon als vorkonfigurierte Server-Appliance betrachten.

Warum ubuntu:latest sofort beendet werden kann

ZimaOS erwartet, dass eine installierte Docker-App über einen sinnvollen, langfristig laufenden Prozess verfügt. Ein reines Distributions-Image dient normalerweise als Grundlage für ein anderes Image oder als interaktive Shell-Umgebung. Wenn kein Dienstprozess so konfiguriert ist, dass er als PID 1 aktiv bleibt, kann der Container normal beendet werden, anstatt „abzustürzen“.

Prüfen Sie das Containerprotokoll und den Exit-Status, bevor Sie annehmen, dass ZimaOS die Installation des Images nicht erfolgreich abgeschlossen hat. Ein beendeter Container ohne konfigurierte Anwendung ist ein anderes Problem als ein Dienst, der startet und einen Fehler ausgibt.

Wenn Sie nur eine Anwendung benötigen, beginnen Sie mit der Anwendung

Der Nutzer erklärte, dass er eigentlich keine vollständige VM wollte. Er wollte eine Anwendung – iDrive – und Zugriff auf den NAS-Speicher. In dieser Situation besteht das beste Docker-Design in der Regel darin, ein gepflegtes Image für die eigentliche Anwendung zu finden oder ein kleines Image zu erstellen, das diese Anwendung installiert und startet.

Der Container sollte nur die Ports, Volumes, Zugangsdaten und Geräte bereitstellen, die die Anwendung benötigt. Persistente Dateien sollten im eingebundenen ZimaOS-Speicher liegen, nicht ausschließlich in der flüchtigen Containerschicht.

Verwenden Sie Docker Compose für einen echten Containerdienst

Die Antwort aus der Community empfahl eine vollständige Compose-Definition, anstatt nur ubuntu:latest und einen Containernamen gehören. Das aktuelle ZimaOS geht noch weiter in diese Richtung: Es kann Docker Compose importieren, YAML bearbeiten und Stacks mit mehreren Containern und Lebenszyklussteuerung ausführen.

Nach den aktuellen Empfehlungen von IceWhale gehört die standardmäßige Konfiguration der Containerlaufzeit in Docker Compose, während ZimaOS-spezifische Store-Metadaten in x-casaos.

Verwenden Sie das aktuelle ZimaOS-Compose-Modell für selbst gehostete Apps, anstatt einen Distributions-Image-Namen als vollständige Anwendungsdefinition zu behandeln.

NAS-Speicher in den Container einbinden

Wenn die Anwendung nur Zugriff auf ein Verzeichnis benötigt, binden Sie den entsprechenden ZimaOS-Ordner in den Container ein. Die Host-Seite sollte auf einen Backup- oder Datenordner im vorgesehenen Speicherpool verweisen, während die Container-Seite einen einfachen Pfad bereitstellt, den die Anwendung erwartet.

Die aktuelle ZimaOS-Dokumentation erklärt, wie Host-Speicher in Containerpfade eingebunden wird. Das ist in der Regel ressourcenschonender, als eine vollständige Debian-VM zu betreiben, nur um auf einen einzelnen Ordner zuzugreifen.

Verwenden Sie ZVM, wenn die Software eine vollständige Linux-Maschine erwartet

Eine VM ist die bessere Wahl, wenn das Installationsprogramm der Anwendung Dinge wie Folgendes erwartet:

  • Ein herkömmlicher Paketmanager und ein veränderliches Systemdateisystem;
  • systemd oder mehrere Dienste auf Betriebssystemebene;
  • Kernelnahe Funktionen, die nicht sicher über einen Container bereitgestellt werden können;
  • Eine herkömmliche, per SSH verwaltete Linux-Serverumgebung;
  • Software eines Anbieters, der Ubuntu-/Debian-Installationen ausdrücklich unterstützt, Docker jedoch nicht.

Das entspricht der ersten Antwort aus der Community: Wenn das Ziel ein eigenständiges Debian- oder Ubuntu-Betriebssystem ist, verwenden Sie ZVM, anstatt ein Basis-Container-Image dazu zu zwingen, sich wie eine vollständige VM zu verhalten.

Installieren Sie die App stattdessen nicht in das ZimaOS-Root-Dateisystem

Vom „Ubuntu-Container wird beendet“ zu „Ich installiere die Software per apt direkt auf ZimaOS“ zu wechseln, ist in der Regel die falsche Richtung. Das aktuelle ZimaOS hält die meisten Systemordner absichtlich schreibgeschützt und ist kein allgemeiner Debian-/Ubuntu-Host mit apt als normales Modell zur Anwendungsverwaltung.

Container und VMs gibt es genau deshalb, damit Anwendungsabhängigkeiten vom ZimaOS-Basissystem getrennt bleiben können.

Wann ein Debian-/Ubuntu-Basis-Image dennoch nützlich ist

Es gibt berechtigte Gründe, auf ubuntu oder debian: Die Zielsoftware veröffentlicht möglicherweise Installationsanleitungen nur für diese Distributionen, oder Sie benötigen deren Paketquellen während der Image-Erstellung.

Erstellen Sie in diesem Fall ein Dockerfile oder ein auf Compose basierendes Image, das die Anwendung installiert und einen echten Vordergrundbefehl definiert. Verlassen Sie sich nicht darauf, manuell eine Shell zu öffnen, Pakete interaktiv zu installieren und darauf zu hoffen, dass der geänderte Container zu einer dauerhaften App wird. Beim Neuerstellen des Containers können Änderungen verloren gehen, die nicht in das Image integriert oder in persistenten Volumes gespeichert wurden.

Eine Neustartrichtlinie ersetzt keinen fehlenden Hauptprozess

Docker-Neustartrichtlinien sind für einen echten Dienst nützlich, der nach einem Neustart oder unerwarteten Beenden wieder gestartet werden soll. Sie verwandeln eine ansonsten beendete Shell-Sitzung jedoch nicht in einen Anwendungsserver. Wenn die vorgesehene Arbeit des Containers bereits abgeschlossen ist, führt ein wiederholter Neustart lediglich zu einer Endlosschleife.

Wählen Sie die kleinste Isolierungsebene, die zur Software passt

  • Für die App gibt es bereits ein gepflegtes Docker-Image: Verwenden Sie dieses Image.
  • Die App kann aus Ubuntu-/Debian-Abhängigkeiten paketiert werden: Erstellen Sie einen geeigneten Anwendungscontainer.
  • Die App benötigt einen vollständigen herkömmlichen Linux-Host: Verwenden Sie ZVM.
  • Sie benötigen nur Zugriff auf den Speicher: Binden Sie die erforderlichen NAS-Ordner ein, anstatt die gesamte Festplatte zu virtualisieren.

FAQ zu Ubuntu und Debian auf ZimaOS

Warum wird ubuntu:latest installiert, bleibt aber nicht ausgeführt?

Ein Basis-Distributions-Image ist nicht automatisch ein ständig laufender Dienst. Ein Docker-Container benötigt einen Hauptprozess, der weiterläuft.

Ist ubuntu:latest eine vollständige virtuelle Ubuntu-Maschine?

Nein. Es handelt sich um eine minimale Container-Benutzerumgebung, die den Kernel des Hosts gemeinsam nutzt.

Sollte ich ZVM für jede Linux-Anwendung verwenden?

Nein. Eine echte Docker-Anwendung ist in der Regel schlanker und einfacher zu verwalten, wenn die Software Container unterstützt.

Wann ist ZVM die bessere Wahl?

Verwenden Sie eine VM, wenn die Software einen herkömmlichen, veränderlichen Ubuntu-/Debian-Server mit systemweiten Diensten oder Installationsvoraussetzungen erwartet, die nicht zu einem Container passen.