Ein OCI-Standard ist eine Spezifikation der Open Container Initiative, einer 2015 gegründeten Organisation unter dem Dach der Linux Foundation. Ihr Zweck ist, Container-Technologie herstellerneutral zu definieren, damit Images und Laufzeitumgebungen austauschbar werden.

Drei Spezifikationen

  • Image-Spezifikation: legt fest, wie ein Image aufgebaut ist – Dateisystem-Schichten, Konfiguration und Manifest, dazu die Index-Datei für Multi-Arch-Images. Ein Image, das dieser Spezifikation folgt, lässt sich von jeder konformen Laufzeitumgebung starten.
  • Runtime-Spezifikation: beschreibt, wie ein Container ausgeführt wird – welche Namespaces, Cgroups, Mounts und Umgebung gesetzt werden, und welche Lebenszyklus-Hooks es gibt. Sie ist die Schnittstelle zwischen Container-Manager und Low-Level-Laufzeit (etwa runc oder crun).
  • Distribution-Spezifikation: definiert die HTTP-API von Registries, also wie Images über das Netz verteilt, geprüft und authentifiziert werden.

Warum der Standard praktisch wichtig ist

Vorher gab es ein Nebeneinander inkompatibler Formate. Heute gilt:

  • Ein Image, das mit Docker gebaut wurde, läuft ohne Anpassung unter Podman, in Kubernetes oder auf einer anderen konformen Laufzeitumgebung.
  • Werkzeuge lassen sich mischen: Buildah baut, Skopeo transportiert, containerd führt aus.
  • Registries sind austauschbar, weil alle dieselbe API sprechen.

Ein wiederkehrendes Missverständnis betrifft den Umfang: OCI regelt nicht, wie Container orchestriert werden. Skalierung, Netzwerkregeln, Ausrollstrategien und Speicherverwaltung sind Sache der Plattform – Kubernetes definiert sie über CRDs und Controller, nicht über die OCI-Spezifikation. Ebenso sagt OCI nichts über Sicherheitsrichtlinien; dafür gibt es ergänzende Standards wie Seccomp-Profile, AppArmor und Linux-Capabilities.

Image-Index und Plattformen

Multi-Arch-Images sind über einen Image Index gelöst: Ein Manifest verweist auf je ein Plattformmanifest für linux/amd64, linux/arm64 und so weiter. Eine Registry liefert dann beim Ziehen automatisch die passende Variante – deshalb funktioniert docker pull nginx auf x86-Servern und auf ARM-Systemen wie dem Raspberry Pi gleichermaßen, ohne Plattformangabe.

Verwandte Grundlagen: Container, Docker-Image, Registry, Kubernetes.