Suchen Sie nach Produkten und Lösungen von InterSystems, Karrieremöglichkeiten und mehr. Die Ergebnisse umfassen neben Suchtreffern von InterSystems-Webseiten auch Inhalte aus unserer Entwickler-Community, unseren Produktdokumentationen und Schulungsangeboten.

Was ist ein Container?

Container und InterSystems IRIS Data Platform sind ein perfektes Paar.
InterSystem IRIS Data Platform unterstützt Container. Allerdings nicht solche...

Mit der Einführung der InterSystems IRIS Data Platform stellen wir unser Produkt auch in einem Docker-Container bereit. Doch was ist ein Container überhaupt?

Bei Containern handelt es sich um softwaredefinierte Pakete, die einige Ähnlichkeiten mit virtuellen Maschinen (VMs) aufweisen; zum Beispiel können sie ausgeführt werden. Container bieten Isolierung, ohne dass sie das komplette Betriebssystem emulieren müssen. Darum sind sie deutlich schlanker als VMs.

Im Grunde liefern Container eine Antwort auf die Frage, wie sich Anwendungen zuverlässig von einem System in ein anderes verschieben lassen und dort auch garantiert funktionieren. Durch Kapselung aller Anwendungsabhängigkeiten in einem Container und die Schaffung eines isolierten Bereichs für den Prozess steigt die Gewähr, dass Anwendungen auch dann ausführbar sind, wenn sie zwischen Plattformen verschoben werden.

Ein Betriebssystem erlaubt die Ausführung von Prozessen. Diese Prozesse teilen sich Adressräume, Namespaces, Cgroups usw., haben ganz allgemein Zugriff auf die gesamte Betriebssystemumgebung und das Betriebssystem plant und verwaltet ihre Ausführung. So weit, so gut. Was aber können wir tun, wenn wir einen bestimmten Prozess oder eine Gruppe von Prozessen isolieren möchten, um eine spezifische Aufgabe zu erledigen? Die Antwort geben Container, denn sie bieten genau diese Möglichkeit. Man könnte Container also als Sandbox für einen Prozess definieren.

Und was ist eine Sandbox? Dabei handelt es sich um einen isolierten Bereich, in dem ein Container seinen Prozess ausführt. Diese Funktion wird mittels eines Linux-Kernel-Features namens Namespaces (siehe Wikipedia) implementiert, das Sandboxing auch für andere wichtige Systembestandteile wie Netzwerkschnittstellen, Mount-Points, Interprocess Communication (IPC) und Universal Time-Sharing (UTS) möglich macht.

Der Container oder die Sandbox lässt sich auch über ein anderes Kernel-Feature namens Kontrollgruppen oder Cgroups (siehe Wikipedia) steuern. Die Regeln, die wir für einen Container festlegen, sorgen dafür, dass der Container beim Teilen von Ressourcen mit anderen Containern und dem Host ein „guter Nachbar“ ist.

Um zu verstehen, wie sich ein Container von einer VM unterscheidet, können Sie sich die VM als Wohnhaus vorstellen, während ein Container einer Wohnung entspricht.

VMs sind eigenständig und unabhängig, genau wie freistehende Gebäude. Jedes dieser Gebäude verfügt über eigene Infrastruktur: Sanitär- und Heizungsinstallation, Stromversorgung usw. Außerdem gelten für sie bestimmte Mindestanforderungen (mindestens ein Schlafzimmer, ein Dach usw.).

Container hingegen dienen zur Nutzung einer gemeinsamen Infrastruktur, lassen sich also mit einer Wohnung vergleichen. In einem Wohngebäude werden Sanitäranlagen, Heizung, Elektroleitungen, Haupteingang, Aufzüge usw. gemeinsam genutzt. Auf ähnliche Weise verwenden Container die verfügbaren Ressourcen des Hosts mit Hilfe des Linux-Kernels.

Da Container kein komplettes Betriebssystem aufweisen, sondern lediglich ein minimales Linux OS (also nur einige ausführbare Programme in /bin, einige Konfigurations- und Definitionsdateien in /etc sowie ein paar weitere Dateien) benötigen, sind sie oft besonders klein. Damit sind sie sehr flexibel und können leicht verschoben oder innerhalb einer Sekunde hochgefahren werden. Dadurch steigt die Agilität: vom Moment der Erstellung über die Bereitstellungspipeline der Softwarefabrik bis hin zur Ausführung in der Produktionsumgebung. Zufälligerweise passen Container auch perfekt zu CI-/CD-Microservice-Architekturen; das ist jedoch eine andere Geschichte.

Die Prozesse im Container sind eng verbunden mit dem Lebenszyklus des Containers. Wenn ich einen Container starte, will ich normalerweise, dass alle Services meiner Anwendung ausgeführt werden (denken Sie z. B. an Port 80 für einen Webserver-Container und Port 52773 sowie 51773 für einen InterSystems IRIS-Container). Wenn ich den Container stoppe, werden auch alle entsprechenden Prozesse gestoppt.

Was ich in diesem Post beschrieben habe, ist die wesentliche Eigenschaft eines Containers zur Laufzeit: Es handelt sich dabei um eine Sandbox, die Prozesse vom Host und anderen Containern isoliert.

RELATED TOPICS