Zum Inhalt springen
JelinaJelina DocumentationTechnische Dokumentation
Zur Website

docker-compose-Kompatibilität und Erweiterungen

JelinaOS bietet sofort nutzbare Container-Orchestrierung: Die Syntax von docker-compose 2.x wird vollständig unterstützt, die Orchestrierung erfolgt einheitlich über Cloud-Releases oder lokale Verwaltungsschnittstellen, und der Geräteagent führt die Bereitstellung automatisch aus. Darauf aufbauend erweitert JelinaOS die deklarative Verwaltung auf nicht containerisierte Anwendungen (ProgramSet), sodass auch klassische Programme durch Konfiguration verwaltet werden können.

Eine Orchestrierungsdatei ist eine deklarative Konfiguration: Sie wird in einem Cloud-Release oder über die lokale Verwaltungsschnittstelle definiert, vom Geräteagenten synchronisiert und automatisch bereitgestellt. Auf dem Gerät stehen Docker-Befehle für alltägliche Aufgaben an einzelnen Containern zur Verfügung. Die Orchestrierung mehrerer Dienste übernimmt zentral der Geräteagent; zusätzliche Orchestrierungswerkzeuge müssen auf dem Gerät nicht installiert werden.

Die Compose-Unterstützung von JelinaOS basiert auf der Spezifikation 2.x und ermöglicht eine reibungslose Übernahme gängiger Orchestrierungsdateien:

  • Unterstützt werden übliche Konfigurationen wie Dienstdefinitionen, Netzwerke, Volumes, Umgebungsvariablen und Abhängigkeiten;
  • Mit Version 2.x eingeführte Felder und Verhaltensweisen sind kompatibel;
  • In 3.x neu eingeführte Felder werden nicht unterstützt. Verwenden Sie bei der Migration die Syntax von 2.x.
version: "2.4"
services:
app:
image: myapp:1.0.0
restart: always
environment:
MODE: production
ports:
- "8080:80"
worker:
image: myworker:1.0.0
restart: on-failure
depends_on:
- app

Nicht containerisierte Anwendungen: deklarative Verwaltung mit ProgramSet

Abschnitt betitelt „Nicht containerisierte Anwendungen: deklarative Verwaltung mit ProgramSet“

In industriellen Anlagen laufen viele Programme auf klassische Weise: Skripte, Daemons und Binärprogramme von Drittanbietern. JelinaOS integriert sie in ein einheitliches deklaratives Verwaltungssystem. Die Konfigurationsfelder entsprechen direkt den Funktionen von Systemdiensten, was den Einstieg erleichtert und umfassende Verwaltungsmöglichkeiten bietet.

programs:
myapp:
command: run.sh # Startbefehl
running: true # Ausführung aktiviert
restart: always # Neustartrichtlinie
environment: # Umgebungsvariablen
MODE: production
working_directory: . # Arbeitsverzeichnis
user: root # Benutzer für die Ausführung
pid_file: /var/run/myapp.pid
Feld Bedeutung Beschreibung
command Startbefehl Erforderlich; Einstiegspunkt des Programms
running Ausführung aktiviert Standardwert: true
restart Neustartrichtlinie no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always
environment Umgebungsvariablen Schlüssel-Wert-Paare
kill_signal Stoppsignal Signal, das beim Beenden des Programms gesendet wird
working_directory Arbeitsverzeichnis Verzeichnis, in dem das Programm ausgeführt wird
type Diensttyp simple / forking / oneshot / dbus / notify / idle
user / group Ausführungsidentität Ausführung als angegebener Benutzer bzw. angegebene Gruppe
pid_file PID-Datei Speichert die Prozess-ID
wants / requires Abhängigkeiten Schwache / starke Abhängigkeit
before / after Startreihenfolge Start vor bzw. nach dem angegebenen Dienst
conflicts Gegenseitiger Ausschluss Schließt den gleichzeitigen Betrieb mit dem angegebenen Dienst aus
start_limit_interval_sec / start_limit_burst Neustartbegrenzung Maximale Anzahl von Neustarts innerhalb des angegebenen Zeitfensters
start_limit_action Aktion bei Grenzüberschreitung Beispielsweise none, reboot oder poweroff
remain_after_exit Nach Beendigung aktiv bleiben Verhindert wiederholte Starts
exec_start_pre / exec_start_post Vor- und nachgelagerte Befehle Befehle, die vor bzw. nach dem Start ausgeführt werden

ProgramSet unterstützt auch erweiterte Konfigurationen auf Ebene der System-Units, beispielsweise Startabhängigkeiten und Bedingungsprüfungen:

programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # Beim Systemstart automatisch starten
Unit:
ConditionPathExists: /data/app/config.json # Bedingung prüfen
version: "2.4"
services:
# Containerisierte Anwendung
web:
image: myweb:1.0.0
restart: always
programs:
# Klassisches Erfassungsprogramm
collector:
command: collector --config /data/collector.conf
restart: on-failure
after: web

Containeranwendungen und native Programme arbeiten innerhalb desselben Orchestrierungssystems zusammen. Abhängigkeiten, Startreihenfolge und Neustartrichtlinien werden einheitlich verwaltet – darin liegt der besondere Nutzen der Anwendungsverwaltung von JelinaOS.