containerd Container Runtime

Introduction to containerd

containerd is an industrial-grade, open-standard container runtime. It has become one of the core components enabled by default in Kubernetes. containerd is a daemon responsible for managing the complete lifecycle of containers. Its core features:

  • Compliant with the OCI (Open Container Initiative) standard
  • Supports the CRI (Container Runtime Interface) and can be used directly by Kubernetes
  • Lightweight, stable, and highly available, designed for production environments
  • Excludes high-level features (such as building images or Dockerfile support), focusing solely on “running containers”
+---------------------+
|     Kubernetes      |
|    (via CRI)        |
+----------+----------+
           |
+----------v----------+     +------------------+
|     containerd      |<--->| containerd-shim  |
+----------+----------+     +------------------+
           |
+----------v----------+
|       runc          | ← OCI runtime (actually creates containers)
+---------------------+
ComponentRole
containerdThe main daemon that exposes a gRPC API and manages images, containers, and tasks
containerd-shimOne shim process per container, so containers keep running even if containerd crashes
runcAn OCI-compliant low-level runtime that performs syscalls such as unshare, mount, and exec
CRI PluginBuilt into containerd; implements the Kubernetes CRI interface (no extra component needed)

Its place in the ecosystem:

containerd

Installing containerd

You can refer to Getting started with containerd for installation instructions. Alternatively, you can install Docker directly, which will install containerd as well. runc is also installed as part of the containerd installation.

sudo apt update
sudo apt install -y containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
# Make sure SystemdCgroup = true (important for Kubernetes)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

After installation, you can check the version with the ctr command-line tool:

root@node2:~# ctr --version
ctr github.com/containerd/containerd 1.7.28

containerd command-line tools:

NameCommunityAPITargetWeb site
ctrcontainerdNativeFor debugging only(None, see ctr --help for usage)
nerdctlcontainerd (non-core)NativeGeneral-purposehttps://github.com/containerd/nerdctl
crictlKubernetes SIG-nodeCRIFor debugging onlyhttps://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md

containerd’s configuration file is /etc/containerd/config.toml. You can generate the default configuration file with the command containerd config default > /etc/containerd/config.toml.