E



Container

Es hat seine Gründe, warum Container in der industriellen Welt angekommen sind. Sie lösen viele der bisherigen Herausforderungen beim Einsatz von Open Source Software wie Linux. Sie ermöglichen den Einsatz der identischen Software-Version auf unterschiedlicher Hardware, mit unterschiedlichen OS Versionen. Sie entkoppeln Betriebssystem und Applikation im Sinne von Update und Versionspflege. Und ihr Einfluss auf kritische Parameter wie Echtzeitverhalten, Speicherverbrauch etc. ist vernachlässigbar.

Sie erlauben es, Software Dritter auf kritischer Hardware auszuführen und gleichzeitig sicher zu stellen, dass kritische Komponenten unbehelligt ihre Aufgaben versehen können. Und diese Software in einer Sandbox einzuschließen, so dass die Gefahr einer Infizierung des Systems durch Schadsoftware minimiert wird.

Die Entkopplung von Containern untereinander und zum Betriebssystem hin, also das Sandboxing, ist nicht trivial und bedarf einer sorgfältigen Ausführung und Pflege. Es ist machbar, aber sicher nicht in dem vollständigen Sinne, wie es eine virtuelle Maschine (Hypervisor) ermöglicht. Für die meisten Anwendungen sollte es aber genügen.

Damit wird die Ausführung von Software Dritter möglich, da diese durch die Isolation im Container kaum Schaden anrichten kann (vorausgesetzt, die Container sind richtig aufgesetzt, mit eingeschränkten Rechten versehen, der darunter liegende Linuxkernel ist gehärtet usw.). Ressourcen hungrige Anwendungen können dank des Container Ansatzes in ihren Auswirkungen auf das Gesamtsystem, z. Bsp. beim Speicherverbrauch oder der CPU-Auslastung, einfach limitiert werden. Tools und Libraries, die eine Anwendung benötigt, werden im Container mitgeliefert. Die Anwendung wird damit unabhängig vom darunter liegendem Betriebssystem (Distribution) und gleichzeitig können Container mit unterschiedlichen Versionen einer Bibliothek auf dem gleichen Zielsystem betrieben werden.

Containertechnologie heißt bei uns nicht einfach nur Docker. Selbstverständlich unterstützen wir Docker, aber als Laufzeitsystem nutzen wir (lieber) einen voll kompatiblen Ansatz, der für Embedded Systeme deutlich besser geeignet ist. Kleinerer Footprint und höhere Sicherheit bei voller Kompatibilität zu OCI runtime specification.