containerd — The Industry-Standard Container Runtime
containerd is the core container runtime that powers Docker and Kubernetes. It manages the complete container lifecycle — image transfer, storage, execution, and supervision — providing a stable, reliable foundation for container platforms.
What it is
containerd is the core container runtime that powers both Docker and Kubernetes. It manages the complete container lifecycle: pulling images from registries, storing them on disk, creating container filesystems, executing processes inside containers, and supervising them until termination. It is a graduated CNCF project and the default runtime for most Kubernetes distributions.
containerd is designed for infrastructure engineers, platform teams, and anyone running containers in production. While Docker provides a user-friendly CLI, containerd is the lower-level engine that Docker calls under the hood.
How it saves time or tokens
containerd provides a stable, minimal runtime API that avoids the overhead of Docker's full daemon. For Kubernetes clusters, using containerd directly (without Docker) reduces memory footprint and startup latency per node. For CI/CD pipelines, the lighter runtime means faster container creation and image pulls, which translates to shorter build times across hundreds of daily pipeline runs.
How to use
- Install containerd on Linux:
# Ubuntu/Debian
sudo apt install containerd.io
# Or from GitHub releases
curl -LO https://github.com/containerd/containerd/releases/download/v1.7.0/containerd-1.7.0-linux-amd64.tar.gz
sudo tar -C /usr/local -xzf containerd-1.7.0-linux-amd64.tar.gz
- Start the containerd daemon:
sudo systemctl enable --now containerd
- Use
ctr(the containerd CLI) to pull and run images:
sudo ctr images pull docker.io/library/nginx:latest
sudo ctr run docker.io/library/nginx:latest my-nginx
Example
Pull an image and inspect its layers with the containerd CLI:
# Pull an image
sudo ctr images pull docker.io/library/alpine:latest
# List images
sudo ctr images ls
# Run a container
sudo ctr run --rm docker.io/library/alpine:latest test-container echo 'Hello from containerd'
# Check running containers
sudo ctr containers ls
For Kubernetes, containerd is configured as the CRI runtime in kubelet's configuration file.
Related on TokRepo
- AI Tools for DevOps — DevOps tools for container orchestration and deployment pipelines
- AI Tools for Self-Hosted — Self-hosted infrastructure tools including container runtimes
Common pitfalls
- The
ctrCLI is a debugging tool, not a production interface. Usenerdctlfor a Docker-compatible CLI experience on top of containerd. - containerd does not include a built-in image builder. Use BuildKit or kaniko for building container images in containerd-only environments.
- Kubernetes switched from Docker to containerd as the default runtime. If you are migrating, ensure your container images do not depend on Docker-specific features like Docker socket mounting.
- Always check the official documentation for the latest version-specific changes and migration guides before upgrading in production environments.
- For team deployments, establish clear guidelines on configuration and usage patterns to ensure consistency across developers.
Frequently Asked Questions
Docker is a complete container platform with a user-friendly CLI, image building, networking, and volumes. containerd is the lower-level runtime that Docker uses internally. Kubernetes can use containerd directly without Docker, reducing overhead.
Kubernetes deprecated dockershim because Docker added unnecessary layers between Kubernetes and the container runtime. Using containerd directly through CRI is more efficient, with lower memory usage and faster container operations.
containerd itself does not include an image builder. Use BuildKit, kaniko, or buildah to build container images in environments that only have containerd. BuildKit integrates well with containerd for pushing built images.
nerdctl is a Docker-compatible CLI for containerd. It provides familiar Docker commands (nerdctl run, nerdctl build, nerdctl compose) while using containerd as the runtime. It is the recommended CLI for interactive containerd usage.
Yes. containerd is a graduated CNCF project and the default runtime for most Kubernetes distributions including EKS, GKE, and AKS. It powers billions of containers in production across major cloud providers.
Citations (3)
- containerd GitHub— containerd is the core container runtime powering Docker and Kubernetes
- CNCF Landscape— Graduated CNCF project
- Kubernetes Documentation— Kubernetes CRI runtime integration
Related on TokRepo
Discussion
Related Assets
Cython — Write C Extensions for Python Using Python-Like Syntax
Cython is an optimizing static compiler that translates Python-like code into C, producing extension modules that run at native speed. It is used to build high-performance libraries and to wrap existing C/C++ code for Python access.
Numba — JIT Compiler That Makes Python Code Run at C Speed
Numba is an open-source JIT compiler that translates Python and NumPy code into fast machine code using LLVM. It accelerates numerical functions by orders of magnitude with minimal code changes.
ImageMagick — Command-Line Image Processing for 200+ Formats
ImageMagick is a free, open-source software suite for creating, editing, compositing, and converting images. It supports over 200 image formats including PNG, JPEG, TIFF, WebP, SVG, and PDF.