containerd is an industry-standard container runtime that emphasizes being simple, stable, and portable. It runs as a daemon on Linux and Windows and manages the full container lifecycle, including image transfer and storage, container execution and supervision, and low-level storage and network attachments. It's a graduated CNCF project, and it's explicitly designed to be embedded into a larger system rather than used directly by developers or end users, so most people encounter it underneath tools like Docker or Kubernetes rather than calling it directly.
cri plugin implements the Kubernetes Container Runtime Interface, has reached GA status, and has been built into release binaries and enabled by default since containerd 1.1.runc or, on Windows, OS-specific libraries like hcsshim.criu is installed on the system.ctr CLI are included, starting from containerd 1.4.containerd fits teams building or operating a container platform, a Kubernetes node runtime, or any system that needs to manage containers programmatically as an embedded component. Its cri plugin makes it a direct fit for running as the container runtime under a Kubernetes cluster, and its GA-status CRI implementation passes the standard CRI validation, node e2e, and e2e test suites referenced in the README.
It's a poor fit if you're looking for a friendly, end-user-facing way to run containers on your own machine. The README is explicit that containerd is meant to be embedded into a larger system rather than used directly by developers or end users. If that's your goal, tools built on top of containerd are the more appropriate entry point.
The README points to platform-packaged builds and prebuilt binaries rather than a single install command:
main branch for Linux and Windows, but the README warns these may have critical bugs and aren't recommended for production use.Build requirements for developers building from source are documented separately in BUILDING.md, and runtime requirements, such as kernel version, runc, and optionally criu, are covered in the README's Runtime Requirements section.
To enable ctr shell autocompletion, source the provided script in your shell profile:
source ./contrib/autocomplete/ctr
For bash, you can instead copy the completion script into the system-wide completion directory and rename it:
cp contrib/autocomplete/ctr /etc/bash_completion.d/ctr
To get started with the CLI itself, see the getting-started guide and the ops/admin and namespaces documentation linked from containerd.io, or the CONTRIBUTING guide if you plan to work on the project. Since supported registries only need to comply with the OCI Distribution Specification, most existing container registries work with containerd without any registry-side changes, and registry host configuration is covered separately in the project's docs.
For Kubernetes specifically, the README points to guides for installing with Ansible and Kubeadm, performing a custom installation from the release tarball with Kubeadm, testing the CRI plugin, debugging pods and containers with crictl, and configuring the cri plugin, all linked from the CRI Guides section.