containerd is a mid-level container runtime. Simply put, it is a daemon that manages the complete container lifecycle on a single host: creates, starts, and stops containers, pulls and stores images, configures mounts and networking, etc.
The creators of containerd designed it to be easily embeddable into larger systems. Docker relies on containerd to run containers under the hood. In Kubernetes, kubelet often utilizes containerd to manage containers on the node. And smaller projects, like faasd, benefit from the ease of integration with containerd too.
However, programmatic use of containerd is not the only option - there are also several command-line clients available.
These clients cater to different use cases:
ctr is useful for learning about containerd's capabilities,
crictl can be handy when debugging Kubernetes Pods, and
nerdctl may be a good alternative to Docker during local development.
Learn more about containerd and its command-line clients in this highly practical course.