dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim

Ijaz Ahmad Khan picture Ijaz Ahmad Khan · Oct 9, 2017 · Viewed 18.1k times · Source

This stuff is really getting confused now. Can someone please explain what's going on. Just the straight one liner difference.

  • dockerd
  • libcontainerd
  • containerd
  • docker-containerd
  • docker-runc
  • docker-containerd-ctr
  • docker-containerd-shim

thanks

Answer

johnharris85 picture johnharris85 · Oct 9, 2017

dockerd - The Docker daemon itself. The highest level component in your list and also the only 'Docker' product listed. Provides all the nice UX features of Docker.

(docker-)containerd - Also a daemon, listening on a Unix socket, exposes gRPC endpoints. Handles all the low-level container management tasks, storage, image distribution, network attachment, etc...

(docker-)containerd-ctr - A lightweight CLI to directly communicate with containerd. Think of it as how 'docker' is to 'dockerd'.

(docker-)runc - A lightweight binary for actually running containers. Deals with the low-level interfacing with Linux capabilities like cgroups, namespaces, etc...

(docker-)containerd-shim - After runC actually runs the container, it exits (allowing us to not have any long-running processes responsible for our containers). The shim is the component which sits between containerd and runc to facilitate this.