Favicon of containerd

containerd

A container runtime daemon for Linux and Windows that manages image transfer, storage, execution, and supervision as an embeddable component.

containerd is an industry-standard container runtime that emphasizes being simple, stable, and portable. It runs as a daemon on Linux and Windows and manages the full container lifecycle, including image transfer and storage, container execution and supervision, and low-level storage and network attachments. It's a graduated CNCF project, and it's explicitly designed to be embedded into a larger system rather than used directly by developers or end users, so most people encounter it underneath tools like Docker or Kubernetes rather than calling it directly.

Key features

  • Complete container lifecycle management: handles image transfer and storage, container execution, and supervision within a single runtime.
  • Cross-platform daemon: runs on both Linux and Windows, managing the container lifecycle of its host system.
  • CRI plugin for Kubernetes: the built-in cri plugin implements the Kubernetes Container Runtime Interface, has reached GA status, and has been built into release binaries and enabled by default since containerd 1.1.
  • OCI Distribution Spec compatible: works with any container registry that complies with the OCI Distribution Specification.
  • Minimal runtime requirements: most Linux and Windows interaction is delegated to runc or, on Windows, OS-specific libraries like hcsshim.
  • Checkpoint and restore: supports Linux checkpoint and restore features when criu is installed on the system.
  • Command auto-completion: bash and zsh autocompletion scripts for the ctr CLI are included, starting from containerd 1.4.
  • CNCF graduated project: governed under the CNCF, with shared maintainership and governance documents across the wider containerd GitHub organization.

Ideal use cases

containerd fits teams building or operating a container platform, a Kubernetes node runtime, or any system that needs to manage containers programmatically as an embedded component. Its cri plugin makes it a direct fit for running as the container runtime under a Kubernetes cluster, and its GA-status CRI implementation passes the standard CRI validation, node e2e, and e2e test suites referenced in the README.

It's a poor fit if you're looking for a friendly, end-user-facing way to run containers on your own machine. The README is explicit that containerd is meant to be embedded into a larger system rather than used directly by developers or end users. If that's your goal, tools built on top of containerd are the more appropriate entry point.

Installation

The README points to platform-packaged builds and prebuilt binaries rather than a single install command:

  • Many Linux distributions package their own containerd build, for example Ubuntu through Canonical's packaging.
  • 64-bit Intel/AMD binaries for official releases are available on the GitHub releases page, with additional platforms covered depending on release support level.
  • Nightly builds are generated from the main branch for Linux and Windows, but the README warns these may have critical bugs and aren't recommended for production use.

Build requirements for developers building from source are documented separately in BUILDING.md, and runtime requirements, such as kernel version, runc, and optionally criu, are covered in the README's Runtime Requirements section.

To enable ctr shell autocompletion, source the provided script in your shell profile:

source ./contrib/autocomplete/ctr

For bash, you can instead copy the completion script into the system-wide completion directory and rename it:

cp contrib/autocomplete/ctr /etc/bash_completion.d/ctr

To get started with the CLI itself, see the getting-started guide and the ops/admin and namespaces documentation linked from containerd.io, or the CONTRIBUTING guide if you plan to work on the project. Since supported registries only need to comply with the OCI Distribution Specification, most existing container registries work with containerd without any registry-side changes, and registry host configuration is covered separately in the project's docs.

For Kubernetes specifically, the README points to guides for installing with Ansible and Kubeadm, performing a custom installation from the release tarball with Kubeadm, testing the CRI plugin, debugging pods and containers with crictl, and configuring the cri plugin, all linked from the CRI Guides section.

Frequently asked questions

Share:

Stars
20.9K
Forks
4K
Last commit
4 hours ago
Repository age
11 years
License
Apache-2.0
Self-hosted
No
Activity score
83/100
View Repository
Built with:

Similar to containerd

Favicon

 

  
  
Favicon

 

  
  
Favicon