containerd ist eine High-Level-Container-Runtime, die den kompletten Lebenszyklus eines Containers verwaltet: Images ziehen und entpacken, Speicher vorbereiten, Prozesse starten und überwachen. Ursprünglich als Teil von Docker entwickelt, wurde containerd 2017 als eigenständiges Projekt an die Cloud Native Computing Foundation (CNCF) übergeben und ist dort ein ausgereiftes (graduated) Projekt.

Was containerd kann

containerd übernimmt alles, was zum Betreiben von Containern gehört, und bietet dafür eine klare API:

  • Image-Verwaltung: Container-Images aus einer Registry ziehen, entpacken und lokal vorhalten.
  • Lebenszyklus: Container starten, stoppen, neu starten und löschen.
  • Speicher: Snapshots und Schichten (Layers) über sogenannte Snapshotters verwalten.
  • Netzwerk: Namensräume für Netzwerk-Isolation über CNI-Plugins einrichten.

containerd und Docker

Die Docker-Plattform besteht aus mehreren Schichten: Der Docker-Client spricht mit dem Docker-Daemon, dieser nutzt containerd für die Image-Verwaltung und den Container-Lebenszyklus. containerd wiederum startet die einzelnen Prozesse über die Low-Level-Runtime runc.

containerd und Kubernetes

In Kubernetes spricht das Kubelet über die standardisierte Container Runtime Interface (CRI) mit der Runtime. containerd bringt dafür ein eingebautes CRI-Plugin mit und ist heute der am weitesten verbreitete Runtime-Standard für Kubernetes-Cluster — auch Docker nutzt intern containerd. Seit Kubernetes 1.24 ist Docker als Runtime nicht mehr direkt unterstützt; containerd und CRI-O sind die empfohlenen Nachfolger.

Abgrenzung

Im Gegensatz zu Docker liefert containerd keine Komfort-Funktionen wie ein docker build mit Build-Kontext oder ein fertiges Kommandozeilen-Werkzeug für den Alltag. Es ist bewusst schlank gehalten und richtet sich an Orchestrierer wie Kubernetes, die die Runtime über ihre eigene API steuern. docker-Befehle und kubectl-Befehle zeigen, auf welcher Ebene die Bedienung jeweils liegt.

Mehr dazu: Container-Runtime, CRI-O, runc, Container Registry, Pod.