← New search

Container Runtime

containerd

containerd is an industry-standard core container runtime, responsible for managing the complete container lifecycle on a host, including image transfer, storage, and execution. It was originally developed by Docker Inc. and donated to the Cloud Native Computing Foundation (CNCF) in 2017, where it graduated as a mature project in 2019. Designed to be embedded into larger systems, containerd is the underlying runtime used by Docker Engine, Kubernetes (via CRI), and many other platforms. Its lightweight, extensible architecture makes it a foundational component of modern cloud-native infrastructure.

1.7.13
Latest stable release (Feb 2025)
Version
46+
Active contributors per month
Contributors
400+
GitHub stars (thousands)
Stars
1

History and origin

containerd emerged from Docker's internal architecture in 2015, when the company split its monolithic daemon into smaller, specialized components. The project was initially released as an open-source daemon focused on container execution, image management, and storage. In 2017, Docker donated containerd to the CNCF, where it joined the growing ecosystem of cloud-native tools. 1 The project reached graduation status in 2019, demonstrating its maturity and widespread adoption . A key milestone was the adoption of the Open Container Initiative (OCI) specifications, making containerd a reference implementation for OCI runtime and image standards 2.

2

Architecture and features

containerd is designed as a daemon that exposes a gRPC API for managing containers. It relies on runtimes like runc (for Linux) or runhcs (for Windows) for actual execution, and handles image pulling, snapshotting, and networking plumbing. 1 The project introduced the concept of a "shim" process, which keeps container stdout/stderr streams alive after the parent daemon restarts, improving reliability. 3 It also supports multiple storage drivers (overlay, devicemapper, etc.) and integrates with the Container Runtime Interface (CRI) for Kubernetes. A notable feature is the ability to use containerd as a standalone service without Docker, enabling direct orchestration integration.

3

Ecosystem and adoption

containerd is the default runtime in Docker Engine since version 18.09, and is used by Kubernetes (via CRI-O or directly as the CRI implementation) in many production clusters. It is also employed by cloud providers such as Google Kubernetes Engine (GKE) and Amazon EKS as the underlying runtime. The project's stability and performance have led to its integration into edge computing platforms and IoT devices, where low overhead is critical. Additionally, the containerd community maintains plugins for telemetry, logging, and security, extending its usefulness beyond container orchestration.

4

Lesser-known aspects

A less commonly known fact is that containerd can run Linux containers on Windows via the LinuxKit virtual machine, enabling cross-platform development. It also supports lazy pulling of container images using the estargz format, speeding up cold starts in serverless environments. Another niche capability is its use of the ``transfer service`` API, which allows custom image encryption and signing not present in other runtimes. The project's ``nerdctl`` CLI tool provides a Docker-compatible interface for debugging and local development, but is often overlooked in favor of Docker itself. Furthermore, containerd's snapshotter can be extended to support overlay filesystems on distributed storage backends, an area of active research.

Glossary

runc
A low-level OCI runtime that creates and runs containers by directly interfacing with the Linux kernel.
CRI (Container Runtime Interface)
A plugin interface that enables kubelet to use a variety of container runtimes without recompiling.
OCI (Open Container Initiative)
A Linux Foundation project that defines open standards for container image formats and runtimes.
shim
A containerd component that manages a container's lifecycle independent of the main daemon, ensuring clean I/O handling.

This article reflects containerd as of February 2025.