CLI-Tool
containerd/nerdctl avatar
containerd/nerdctl

nerdctl: Die Docker-kompatible CLI, die containerd-Funktionen unter Docker-Befehlen freigibt

contaiNERD CTL – Docker-kompatible CLI für Containerd, mit Unterstützung für Compose, Rootless, eStargz, OCIcrypt, IPFS, ...

10.375 Sterne826 ForksGoApache-2.0
GitHub

Auf einen Blick

Was ist das?
Analyse von containerd/nerdctl: gleiche Bedienoberfläche wie Docker, Compose-Support, Rootless-Betrieb und optionale containerd-Features wie Lazy-Pulling, ocicrypt, IPFS und cosign.
Für wen ist es gedacht?
nerdctl passt für Betreiber, die direkt auf containerd arbeiten und die Docker-Bediengewohnheiten behalten wollen, sowie für die Fehlersuche in Kubernetes-Knoten über den Namespace k8s.io. Wer eine vollständige Docker-Erfahrung mit Desktop-Integration sucht, wird mit Docker selbst besser bedient; vor dem Einsatz sollte geprüft werden, welche der optionalen Abhängigkeiten wie CNI-Plugins, BuildKit oder RootlessKit im eigenen Setup bereits vorhanden sind.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 2 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Go, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

nerdctl als Nicht-Kern-Unterprojekt von containerd mit Docker-Bedienschnittstelle

nerdctl ist eine Docker-kompatible Kommandozeile für containerd, entwickelt als Nicht-Kern-Unterprojekt unter der containerd-Organisation. Das bedeutet im Alltag: dieselben Befehlsformen und dieselbe Bedienerfahrung wie docker, aber darunter läuft die containerd-Laufzeit. Die README zählt als Kernversprechen die Compose-Unterstützung mit nerdctl compose up sowie eine Reihe optionaler Fähigkeiten auf: Rootless-Betrieb ohne slirp-Overhead mit bypass4netns, Lazy-Pulling, verschlüsselte Images über ocicrypt, P2P-Image-Verteilung über IPFS und Image-Signierung mit cosign. Ausdrücklich nennt das Projekt sein Ziel nicht als Konkurrenz zu Docker, sondern als Erleichterung, neue containerd-Funktionen zu erproben, die Docker noch nicht hat. Die Metadaten zeigen einen lebendigen Stand: 10.342 Sterne, 818 Forks, 356 offene Issues, Sprache Go, Lizenz Apache-2.0, aktuell Release v2.4.0-beta.0 vom 24. August 2026 nach stabilem v2.3.5.

Alltagsbefehle: nerdctl run -it --rm alpine und Builds mit BuildKit

Die Beispiele der README folgen bewusst den Docker-Gewohnheiten. Ein Container im Standard-Bridge-Netzwerk 10.4.0.0/24 startet mit nerdctl run -it --rm alpine. Images baut nerdctl mit BuildKit: nerdctl build -t foo /some-dockerfile-directory, danach nerdctl run -it --rm foo. Die Build-Ausgabe lässt sich mit nerdctl build -o type=local,dest=. direkt in ein lokales Verzeichnis schreiben. Compose-Stacks laufen ohne Docker-Daemon: nerdctl compose -f ./examples/compose-wordpress/docker-compose.yaml up, begleitet vom Beispiel compose-wordpress im Repository. Voraussetzung für Builds ist ein laufender buildkitd; ohne BuildKit bleibt der build-Unterbefehl unbrauchbar. Wer von Docker kommt, erkennt also nicht nur die Befehle, sondern auch die von docker-compose.yaml bekannten Dateiformate wieder.

Kubernetes-Fehlersuche mit nerdctl --namespace k8s.io ps -a

Ein praktischer Nebeneffekt der containerd-Basis: Alle Kubernetes-Container liegen im containerd-Namespace k8s.io, unabhängig von den Kubernetes-Namespaces. Mit nerdctl --namespace k8s.io ps -a lassen sich die Container eines Knotens auflisten, inklusive Zuordnung wie k8s://kube-system/coredns-787d4945fb-mfx6b/coredns. Images für ein lokales Kubernetes baut man ohne Registry: nerdctl --namespace k8s.io build -t foo /some-dockerfile-directory, dann kubectl apply mit einem Pod-Manifest, das imagePullPolicy: Never setzt. Auch das Laden eines Image-Archivs im docker-save- oder OCI-Format funktioniert mit nerdctl --namespace k8s.io load < /path/to/image.tar. Das Lesen von Logs ist laut README experimentell: nerdctl --namespace=k8s.io logs -f e8793b8cca8b. Für Knoten-Debugging ist das ein direkter Weg, ohne den Kubernetes-API-Server zu berühren.

Rootless-Betrieb mit containerd-rootless-setuptool.sh und bypass4netns

Der Rootless-Modus beginnt mit dem Aufruf containerd-rootless-setuptool.sh install, der ein rootless containerd einrichtet. Danach läuft der Betrieb als unprivilegierter Nutzer: nerdctl run -d -p 8080:80 --name nginx nginx:alpine. Details hält das Projekt in docs/rootless.md fest. Interressant ist die Leistungsoptimierung bypass4netns, die den slirp-Overhead von Rootless-Netzwerken umgeht und über die Annotation nerdctl/bypass4netns=true aktiviert wird: nerdctl run --annotation nerdctl/bypass4netns=true. Voraussetzung ist RootlessKit in Version 0.10.0 oder später, empfohlen werden v3.0.0 oder neuer. Damit positioniert sich nerdctl als eine der wenigen Möglichkeiten, containerd vollständig ohne Root-Rechte zu betreiben, mit einer Netzwerkleistung, die vom slirp-Flaschenhals entkoppelt ist.

Features jenseits von Docker: Stargz, Nydus, OverlayBD, SOCI, ocicrypt und IPFS

Die README listet Fähigkeiten auf, die Docker nicht bietet. Beim Image-Pulling lassen sich vier Snapshotter wählen: nerdctl --snapshotter=stargz|nydus|overlaybd|soci run IMAGE zieht Lazy, also erst die Layer, die der Container tatsächlich braucht. Image-Verschlüsselung läuft über ocicrypt mit nerdctl image (encrypt|decrypt) SRC DST. P2P-Verteilung geht über IPFS mit nerdctl run ipfs://CID; das ist vollständig optional, der Host verbindet sich mit keinem P2P-Netz, solange man nicht selbst einen IPFS-Daemon installiert und startet. Signierung und Prüfung integrieren cosign über nerdctl pull --verify=cosign und nerdctl push --sign=cosign, auch innerhalb von Compose. Zu den kleineren Abweichungen gehören Namespacing mit nerdctl --namespace=<NS>, Export im Docker- und OCI-Format, FreeBSD-Jails, Multi-Plattform-Pull und AppArmor-Profile für Rootless-Container. Benchmarks zu diesen Features liefert die README nicht.

Installation: CNI-Plugins ab v1.1.0, BuildKit ab v0.11.0 und die Full-Archive

Binärdateien liegen unter https://github.com/containerd/nerdctl/releases. Neben containerd sind weitere Komponenten nötig: CNI-Plugins für nerdctl run, empfohlen v1.1.0 oder später, und optional BuildKit für nerdctl build, empfohlen v0.11.0 oder später; mit älteren Versionen funktionieren etwa Caches mit nerdctl system prune nicht. Für den Rootless-Modus kommt RootlessKit hinzu. Wichtig ist der Unterschied zwischen den Archiven: nerdctl-full-<VERSION>-<OS>-<ARCH>.tar.gz bündelt diese Abhängigkeiten, nerdctl-<VERSION>-<OS>-<ARCH>.tar.gz nicht. Auf Linux-Systemen installiert brew install nerdctl, auf Windows scoop install nerdctl. Aus dem Quellcode entsteht die Binärdatei mit make && sudo make install; go install ist möglich, wird aber nicht empfohlen, weil nerdctl version dann keine Versionsstrings enthält. Tests sind in docs/testing/README.md beschrieben, Beiträge erfordern einen mit git commit -s signierten Developer Certificate of Origin.

Plattformpfade: Lima auf macOS, WSL2 unter Windows und FreeBSD-Dokumentation

Auf macOS gibt es kein natives nerdctl; das Lima-Projekt stellt Linux-Virtualmaschinen mit eingebauter nerdctl-Integration bereit. Der Weg lautet brew install lima, limactl start, dann lima nerdctl run -d --name nginx -p 127.0.0.1:8080:80 nginx:alpine. Unter Windows gelten Einschränkungen: Linux-Container sind unter WSL2 bekannt funktionierend, Windows-Container haben experimentellen Support, dokumentiert mit der Liste der Features, die derzeit bekannt funktionieren. Für FreeBSD verweist das Projekt auf docs/freebsd.md. Wer das Paket isoliert ausprobieren will, kann containerd und nerdctl sogar in Docker betreiben: docker build -t nerdctl . und docker run -it --rm --privileged nerdctl. Diese Plattformmatrix zeigt, dass der Fokus klar auf Linux liegt und die übrigen Systeme über Umwege bedient werden.

Fazit: Apache-2.0 und die Abgrenzung zu ctr, crictl und k3c

Die README grenzt nerdctl von verwandten Werkzeugen ab: ctr, die native containerd-CLI, bietet keine Portzuordnung, Neustartrichtlinien, Credentials-Helfer, Logs, Build oder Compose. crictl ist auf das CRI ausgelegt und unterstützt keine Nicht-CRI-Fähigkeiten. Das eingestellte k3c v0.2 brauchte einen zusätzlichen Daemon, Rancher Kim setzt Kubernetes voraus und konzentriert sich auf Image-Management, PouchContainer braucht ebenfalls einen eigenen Daemon. nerdctl füllt damit die Lücke für Nutzer, die von Docker kommen und trotzdem direkt auf containerd arbeiten wollen, ohne zusätzlichen Daemon neben containerd selbst. Unter der Apache-2.0-Lizenz ist kommerzieller Einsatz unkompliziert. Wer Lazy-Pulling, verschlüsselte Images oder Rootless-Betrieb mit bypass4netns nutzen will, findet in nerdctl eine der direktesten Zugänge zu diesen containerd-Fähigkeiten, ohne auf die Docker-Roadmap zu warten.

Redaktionelles Fazit

nerdctl passt für Betreiber, die direkt auf containerd arbeiten und die Docker-Bediengewohnheiten behalten wollen, sowie für die Fehlersuche in Kubernetes-Knoten über den Namespace k8s.io. Wer eine vollständige Docker-Erfahrung mit Desktop-Integration sucht, wird mit Docker selbst besser bedient; vor dem Einsatz sollte geprüft werden, welche der optionalen Abhängigkeiten wie CNI-Plugins, BuildKit oder RootlessKit im eigenen Setup bereits vorhanden sind.

Offizielle Quellen

  1. Official README
  2. Project repository
  3. Release notes
Community-Notizen

Community-Notizen