containerd
containerd is an industry-standard container runtime that manages the full container lifecycle on a host: image transfer, storage, container execution, supervision, and networking. It runs beneath higher-level tools like Docker and Kubernetes as the core execution engine.
itCloud native tools and technologies | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don’t Panic: containerd
containerd is machinery beneath machinery. It manages a container lifecycle on one host, which is less theatrical than managing a cluster and much closer to the floorboards. It turns image material into a filesystem and a process, while cluster scheduling belongs elsewhere.
A platform that wanted containers once had to assemble image transfer, storage, filesystems, metadata, execution, and supervision itself. containerd puts those jobs behind services and a gRPC API. Kubernetes reaches it through CRI, the Container Runtime Interface between kubelet and a runtime implementation. Other platforms can call it directly. Neither route asks containerd where a workload should go. That committee meets somewhere else.
Keep one sequence: resolve, store, unpack, configure, create a task, run. Image manifests, configuration, and layers arrive as immutable blobs in the content store, where a digest identifies the bytes. They are not a root filesystem yet, regardless of the confident name image. A snapshotter applies the layers and prepares the writable filesystem.
Then comes the vocabulary trap. A container is stored metadata and configuration. A task is the live process created from it. A container can exist with no running process, which feels mildly impolite until it solves a diagnostic puzzle. If the record exists but the process does not, inspect task creation, the shim, and the runtime path instead of pulling the image again.
A runtime shim connects containerd to an OCI runtime such as runc. Plugins provide content, snapshots, runtimes, CRI, and gRPC services. Their health is not decorative. A failed plugin can remove a capability before an application gets a chance to complain.
Namespaces separate names and metadata for different consumers, while content may remain shared by digest. They are not security boundaries. A client can select a namespace, so authorization and host access controls still do the serious work.
Read the introduction for the architecture and limits. The slides make the request path visible. The cheatsheet holds object names, client choices, configuration anchors, and failure boundaries. Use the practice reference for a harmless lifecycle inspection, then the exercise to make the container and task distinction stick.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://github.com/containerd/containerd
Supports
- containerd as a host-level container runtime daemon designed for embedding
- Image transfer and storage, execution and supervision, and low-level host attachments
- Runtime relationship with runc and operating-system-specific libraries
- Built-in CRI plugin for Kubernetes
- https://containerd.io/docs/
Supports
- Official versioned documentation entry points for current and maintained releases
- https://github.com/containerd/containerd/blob/main/docs/getting-started.md
Supports
- ctr as a debugging client, nerdctl as a general-purpose client, and crictl as a CRI debugging client
- Built-in Kubernetes CRI support
- Standard Linux configuration path and default configuration generation
- Client, image pull, container creation, and task lifecycle
- Container metadata existing before a task starts the user process
- https://github.com/containerd/containerd/blob/main/docs/content-flow.md
Supports
- OCI registry, content store, and snapshot content areas
- Image indexes, manifests, configuration, layers, and platform selection
- Unpacking layers into committed snapshots and creating an active snapshot
- https://github.com/containerd/containerd/blob/main/docs/runtime-v2.md
Supports
- Relationship among containerd, runtime shims, and runtime engines
- Filesystem preparation before runtime invocation
- runc invocation through containerd-shim-runc-v2
- Task create, start, stop, and communication flow
- https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md
Supports
- Smart-client architecture and extension interfaces
- Built-in and external plugin models
- Plugin status inspection
- Configuration version 3 recommendation for containerd 2.x and version 2 support
- https://containerd.io/docs/main/namespaces/
Supports
- Namespaced API for multiple consumers of one daemon
- Separate names and metadata with shared content-addressed image data
- Namespaces as administrative constructs rather than security features
- Client selection of a namespace
- https://github.com/containerd/containerd/blob/main/docs/hosts.md
Supports
- Per-registry hosts configuration
- Registry mirrors, credentials, and transport security options
- https://github.com/containerd/containerd/blob/main/docs/containerd-2.0.md
Supports
- containerd 2 migration context and deprecation inspection
- Separate installation of containerd, runc, and CNI plugins
- https://github.com/containerd/containerd/blob/main/RELEASES.md
Supports
- Release-line start dates from 0.0 through 2.0
- Runtime V1 and runc v1 deprecation and removal path
- Long-term support status for 1.7 and 2.0
- https://www.cncf.io/news/2017/03/31/new-stack-cncf-accepts-dockers-containerd-coreos-rkt-incubation-projects/
Supports
- CNCF acceptance of containerd in March 2017
- https://www.cncf.io/announcements/2019/02/28/cncf-announces-containerd-graduation/
Supports
- CNCF graduation of containerd in February 2019
