Definition „Open Container Initiative“ Was macht die OCI?
Die Open Container Initiative (OCI) ist eine unter der Schirmherrschaft der Linux Foundation organisierte Gemeinschaft von Unternehmen, die offene Container-Standards entwickeln und pflegen wollen. Die OCI definiert Spezifikationen, Referenz-Implementierungen und andere Tools, um die Interoperabilität und Portabilität von Containern zu ermöglichen.

Die Open Container Initiative wurde 2015 von Docker und einer Reihe weiterer Technologie-Unternehmen gegründet, darunter Google, Red Hat, CoreOS und andere. Die ausgegebene Zielsetzung war, einen einheitlichen Standard für Container zu schaffen, der Interoperabilität und Portabilität ermöglicht.
Die Gründung war eine Reaktion auf die rasche Zunahme der Beliebtheit von Containern. Die Popularität rührt daher, dass Entwicklerinnen und Entwickler ihre Anwendungen in einer abgeschotteten Umgebung ausführen können, die ihrerseits plattformunabhängig ist. Die Programme lassen sich also lokal testen und debuggen, während gleichzeitig sichergestellt ist, dass sie auch auf anderen Systemen ordnungsgemäß funktioniert.
Um sicherzustellen, dass Container-Images und Runtime-Umgebungen auf allen Plattformen funktionieren, ist die Standardisierung der Schnittstellen essenziell. Die drei maßgeblichen Spezifikationen innerhalb der Open Container Initiative sind die Runtime Specification (runtime-spec), die Image Specification (image-spec) und die Distribution Specifikation (distribution-spec).
Runtime Specification
Die OCI Runtime Specification definiert die Schnittstelle, über die Laufzeitumgebungen mit Container-Images interagieren. Zu den spezifizierten Anforderungen zählen die Interaktion der Runtime Environment mit dem Betriebssystem, das Überwachen und Steuern des Container-Lebenszyklus und den Zugriff auf Systemressourcen.
Die OCI schreibt dazu: „Die Runtime-Spezifikation beschreibt, wie ein auf der Festplatte entpacktes „Dateisystembündel“ ausgeführt werden kann. Auf einer hohen Ebene würde eine OCI-Implementierung ein OCI-Image herunterladen und dieses Image dann in ein OCI Runtime-Dateisystembündel entpacken. An diesem Punkt würde das OCI Runtime Bundle von einer OCI Runtime ausgeführt werden. Der Arbeitsablauf sollte ein Verhalten zeigen, das Benutzer von Container-Engines wie Docker und rkt erwarten: in erster Linie die Möglichkeit, ein Image ohne zusätzliche Argumente auszuführen.“
Mit runC existiert auch eine von Docker an die OCI „gespendete“ Referenz-Implementierung der OCI Runtime Specification, die eine einfache Möglichkeit bietet, Container auszuführen. Es ist eine einfache CLI-Anwendung, die es Benutzern ermöglicht, Container zu erstellen und auszuführen, indem sie mit einem einzigen Befehl gestartet werden.
Image Specification
Den eben genannten Workflow unterstützt die OCI Image Specification. Das OCI-Image-Format stellt Informationen dazu bereit, wie sich eine containerisierte Anwendung auf der Zielplattform starten lässt. Die Spezifikation legt fest, wie ein OCI-Image durch ein Build-System zu erstellen ist, und gibt ein Image-Manifest, eine Dateisystem-(Layer-)Serialisierung und eine Image-Konfiguration aus.
Vereinfacht gesagt definiert die Image Specification also das Format, in dem Container-Abbilder erstellt, gespeichert und ausgetauscht werden. Auf höherer Ebene enthält das Image-Manifest Metadaten über die Inhalte und Abhängigkeiten des Images, einschließlich der zu entpackenden Dateisystem-Serialisierungsarchive, um ein lauffähiges Dateisystem bilden zu können. Die Abbildkonfiguration enthält Informationen wie Anwendungsargumente, Umgebungen usw. Die Kombination aus dem Image-Manifest, der Image-Konfiguration und einer oder mehreren Dateisystem-Serialisierungen wird als OCI-Image bezeichnet.
Distribution Specification
Die Distribution Specification der OCI erreichte im Mai 2020 den Versionsstand 1.0 und wurde im Rahmen der OCI eingeführt, um die API für die Verteilung von Container-Images zu standardisieren. Die Spezifikation beschreibt, wie Container-Images in einem Repository gespeichert werden können und wie ein Client diese Images abrufen kann. Zudem enthält sie Anforderungen an die Authentifizierung und Autorisierung beim Zugriff auf Container-Images und beschreibt, wie geprüfte und sichere Images bereitgestellt werden können.
Dank der Distribution Specification können Entwickler auf einfache Weise auf Container-Images zugreifen und diese in ihren Anwendungen verwenden. Außerdem erleichtert die Einhaltung der Distribution Specification durch alle Repository-Anbieter die Interoperabilität und Portabilität von Container-Images. So können Entwickler sicher sein, dass ihre Container-Images überall funktionieren und dass sie auf geprüfte und sichere Images zugreifen können.
(ID:49041873)