Skip to main content
cd ../lexicon
sys/docs/lexicon/containerd.md
Lexicon
Containerd

Containerd

Containerd is an industry-standard container runtime that manages the complete container lifecycle on a host, including image transfer, storage, execution and supervision, and is used directly by platforms such as Kubernetes and Docker.
Difficulty: Intermediate
4 min read
Updated 2026-08-21

In plain English

Plain definition

Containerd is an industry-standard container runtime that manages the complete container lifecycle on a host, including image transfer, storage, execution and supervision, and is used directly by platforms such as Kubernetes and Docker.

Technical Definition

Containerd is a container runtime that manages the complete container lifecycle on a single host: image transfer and storage, container execution and supervision, low-level storage and network attachments, and other host-level operations. It exposes this functionality through a gRPC API and typically delegates the creation of the isolated process itself to an OCI-compliant lower-level runtime such as runc, using the containerd-shim process to keep each container supervised independently of the main Containerd daemon.

Operational Relevance

Containerd is normally not operated directly by end users. Instead, it sits underneath higher-level orchestration and developer tooling. On a Kubernetes node, the kubelet communicates with Containerd through the Container Runtime Interface (CRI) to create and manage pod containers. On a workstation, tools such as Docker or nerdctl issue the same kind of lifecycle calls. Operational visibility into Containerd typically comes from its own logs, its CLI client (ctr, intended mainly for debugging), and the higher-level tool’s status output rather than from direct end-user interaction.

Architecture Relationship

Containerd occupies the middle layer of the container stack. Above it sit orchestrators and developer-facing tools (Kubernetes, Docker, nerdctl) that decide what should run and where. Below it sits the OCI runtime specification and runtimes such as runc that perform the actual namespace and cgroup isolation using Linux kernel primitives. Containerd bridges these layers: it accepts lifecycle requests through its API, manages image and snapshot storage, and hands off process creation to the lower-level runtime while retaining supervisory responsibility for the resulting container.

Example

A Kubernetes node running Containerd as its configured container runtime will show a containerd process on the host, alongside per-container containerd-shim processes. Inspecting the kubelet configuration confirms the CRI socket path used to reach Containerd, and Containerd’s own logs record image pulls and container lifecycle events independently of what kubectl reports at the cluster level.

Misunderstanding

A common misunderstanding is treating Containerd as equivalent to Docker. Docker is a broader developer-facing toolset that, for its container execution, itself relies on Containerd internally; Containerd on its own does not provide image building, a full CLI aimed at end users, or Compose-style multi-container orchestration. It is a runtime component, not a complete developer platform.

  • OCI runtime specification
  • runc
  • Container Runtime Interface (CRI)
  • Kubernetes kubelet
  • Docker

Further Reading

Refer to the official Containerd documentation for authoritative detail on API structure, snapshotter plugins and CRI integration, and confirm any version-specific configuration behaviour against the documentation revision matching the deployed release before making operational changes.