Zum Inhalt springen
JelinaJelina DocumentationTechnische Dokumentation
Zur Website

Containeranwendungen

JelinaOS enthält eine vollständige Containerlaufzeit (Docker). Für die Bereitstellung von Containeranwendungen gilt jedoch ein einheitlicher Grundsatz: Die Verwaltung erfolgt über das Release-System, anstatt Container manuell direkt auf dem Gerät zu starten. Für alle Containeranwendungen in Produktionsumgebungen wird der Release-Ablauf empfohlen. So bleiben Definition, Bereitstellung, Überwachung, Aktualisierung und Rollback durchgehend steuerbar.

Image erstellen und pushen → Containeranwendung im Release deklarieren → Auf Gerät bereitstellen → Geräteagent ruft Image ab und startet es

Erstellen Sie aus Ihrer Anwendung ein Container-Image und übertragen Sie es in eine Image-Registry, entweder eine private Unternehmensregistry oder eine öffentliche Registry:

Terminal window
docker build -t registry.example.com/myapp:1.0.0 .
docker push registry.example.com/myapp:1.0.0

Erstellen Sie in JelinaCloud ein Release und fügen Sie die Containeranwendung hinzu:

  • Geben Sie Image-Adresse und Versions-Tag an. Eine explizite Version wird empfohlen, um unbeabsichtigte Updates zu vermeiden;
  • Konfigurieren Sie Umgebungsvariablen, Portzuordnungen und Daten-Volumes;
  • Legen Sie die Neustartrichtlinie (empfohlen: always) und die Ressourcenlimits fest.

Stellen Sie das Release auf der Zielflotte oder dem Zielgerät bereit. Der Geräteagent führt automatisch die folgenden Schritte aus:

  • Image herunterladen und Container erstellen;
  • Umgebungsvariablen setzen, Ports zuordnen und Daten-Volumes entsprechend der Konfiguration einbinden;
  • Container starten und dauerhaft überwachen: automatischer Neustart bei Fehlern und automatische Wiederherstellung nach einem Geräteneustart.

Beim Neuerstellen eines Containers geht dessen Dateisystem verloren. Binden Sie Daten, die dauerhaft erhalten bleiben müssen, in die Datenpartition ein:

  • Deklarieren Sie im Release ein Daten-Volume für die Anwendung oder binden Sie ein Verzeichnis der Gerätedatenpartition ein;
  • Die Daten sind vom Containerlebenszyklus unabhängig und bleiben bei Updates und beim Neuerstellen erhalten.

Die Docker-Befehle auf dem Gerät dienen der Überprüfung und Diagnose, nicht der Bereitstellungsverwaltung:

Terminal window
docker ps # Containerstatus anzeigen
docker logs <Containername> # Containerprotokolle anzeigen
docker events # Containerereignisse zur Diagnose verfolgen
  • Feste Versionen: Verwenden Sie im Release explizite Image-Versions-Tags;
  • Zustandsprüfungen: Konfigurieren Sie Healthchecks für die Dienste, um zusammen mit der Neustartrichtlinie eine automatische Wiederherstellung zu ermöglichen;
  • Ressourcenlimits: Begrenzen Sie Arbeitsspeicher und CPU-Nutzung der Container, damit das gesamte Gerät nicht beeinträchtigt wird;
  • Private Registry: Verwenden Sie in Unternehmensumgebungen eine private Image-Registry. Die Image-Verteilung übernimmt zentral der Geräteagent;
  • Updates und Rollbacks: Führen Sie Updates durch Bereitstellung einer neuen Version und Rollbacks durch erneute Auswahl der bisherigen Version aus. Beides wird aus der Cloud orchestriert.

Kann ich Anwendungen direkt auf dem Gerät mit docker run bereitstellen? Technisch ist das möglich, wird jedoch nicht empfohlen: Direkt gestartete Anwendungen gehören nicht zum Release-System und erhalten keine einheitliche Überwachung sowie Update- und Rollback-Funktionen. Verwenden Sie in Produktionsumgebungen die Bereitstellung über Releases.

Was geschieht, wenn ein Container unerwartet beendet wird? Anwendungen, für die im Release restart: always konfiguriert ist, werden nach einer unerwarteten Beendigung vom Geräteagenten automatisch neu gestartet.