Originally, Docker’s runtime was called libcontainer, which was later split into two projects: containerd and runc, both of which were donated to the CNCF around 2017.

containerd is a daemon that manages the entire container lifecycle, including networking, volumes, image building and integrity, bundle history logging, etc; things that runc1 doesn’t do. It complements runc, which implements the OCI runtime-spec, by implementing the image-spec.

There are two ways to interact with containerd:

  • ctr cli for debugging purposes only
  • nerdctl — a general purpose cli tool, mimicking the docker-cli UX

Sources

Footnotes

  1. containerd supports any runtime that complies to the OCI runtime-spec. An example is runhcs — a runc fork for Windows