Container-Runtime ist die Software, die Container tatsächlich ausführt: Sie zieht Images aus einer Registry, entpackt sie, richtet die isolierte Umgebung ein (Namespaces, cgroups) und startet die Prozesse. Ohne Runtime ist ein Container nur ein Image auf der Platte.
Zwei Ebenen
- Low-Level-Runtimes (z.B.
runc): erzeugen und starten einzelne Container-Prozesse direkt mit dem Linux-Kernel (Namespaces, cgroups). Sie sind die unterste Schicht. - High-Level-Runtimes (z.B.
containerd, CRI-O): verwalten den kompletten Lebenszyklus — Images ziehen, Speicher vorbereiten, Container-Prozesse über eine Low-Level-Runtime starten und überwachen. Sie bieten eine API für Orchestrierer.
Runtimes und Kubernetes
In Kubernetes kommuniziert das Kubelet über die standardisierte Container Runtime Interface (CRI) mit der High-Level-Runtime. containerd (ursprünglich aus Docker extrahiert) ist heute der Industriestandard, CRI-O ist die schlanke Alternative. Seit Kubernetes 1.24 ist Docker als Runtime nicht mehr direkt unterstützt — Docker nutzt intern ohnehin containerd.
Docker und Runtime
Die Docker-Plattform besteht aus mehreren Schichten: Der Docker-Client spricht mit dem Docker-Daemon, dieser nutzt containerd für die Image-Verwaltung und runc für das Starten der Prozesse. Wer Container verstehen will, sollte diese Schichten kennen.
Verwandte Grundlagen
Mehr dazu: Kubelet, Docker Swarm, Kubernetes, Container, Container Registry, Runtime.