containerd
Eine branchenübliche Container-Runtime
containerd ist eine Container-Runtime, die den gesamten Container-Lebenszyklus auf einem Host verwaltet – Image-Transfer und -Speicherung, Ausführung und Überwachung von Containern sowie Low-Level-Speicher- und Netzwerkanbindungen. Sie ist die Standard-Runtime hinter den meisten verwalteten Kubernetes-Angeboten und hinter Docker selbst.
So funktioniert es
containerd läuft als Daemon auf jedem Knoten und stellt eine gRPC-API bereit, die übergeordnete Systeme – der kubelet von Kubernetes über das Container Runtime Interface (CRI) oder die Docker Engine – nutzen, um Images zu pullen und Container zu starten. Die eigentliche Prozessausführung delegiert es an eine Runtime auf niedrigerer Ebene (typischerweise runc), sodass sich containerd auf die Lebenszyklusverwaltung konzentriert statt auf die Mechanik von Namespaces und cgroups.
Kernkonzepte
- Image — ein unveränderliches, in Schichten aufgebautes Dateisystem-Bundle, das aus einer Registry gepullt wird.
- Snapshot — das Copy-on-Write-Dateisystem, das containerd für einen laufenden Container aus den Schichten eines Images aufbaut.
- Task — eine laufende Instanz eines Containers, gestützt auf einen Prozess des Betriebssystems.
- Namespace (containerds eigener, unterschieden von Kubernetes-Namespaces) — isoliert Container und Ressourcen verschiedener Clients auf demselben Host.
Warum Teams auf containerd setzen
- Minimal und fokussiert. Es erledigt eine Aufgabe – die Verwaltung des Container-Lebenszyklus – gut, statt eine CLI, Build-Werkzeuge und Orchestrierung mitzubringen.
- CRI-nativ. Es implementiert das Kubernetes Container Runtime Interface direkt, sodass der kubelet ohne zusätzliche Shim-Schicht mit ihm spricht.
- Praxiserprobt. Es ist die Runtime unter der Haube des Großteils der produktiven Kubernetes-Cluster.
- Graduiertes CNCF-Projekt. Governance und Sicherheitspraktiken werden von derselben Stiftung geprüft, die auch Kubernetes selbst beherbergt.
Erste Schritte
Auf den meisten verwalteten Kubernetes-Plattformen ist containerd bereits die konfigurierte Runtime – es gibt nichts zu installieren. Wo du es direkt konfigurieren musst (ein selbstverwalteter Cluster, ein Bare-Metal-Knoten oder lokale Entwicklung mit nerdctl), behandeln die folgenden Anleitungen die gängigen Setups.