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
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
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.
From the documentation:
runC is built on libcontainer which is the same container library powering a Docker engine installation. Prior to the version 1.11, Docker engine was used to manage volumes, networks, containers, images etc.. Now, the Docker architecture is broken into four components:
Docker engine
containerd
containerd-shm
runC.
The binaries are respectively called:
docker
docker-containerd
docker-containerd-shim
docker-runc.
High-level picture for further better understanding: (read other good answers before this)
Curated pictures collection for quick understanding:
Sources:
There is a reason for this saying "A picture is worth a thousand words"
I know it was an old question but our team has not upgraded our Kubernetes to 1.24+ because "Kubernetes support for Docker via dockershim is now removed." still causes quite some confusion in 2023 inside our team, so I would like to add these three pictures from https://www.tutorialworks.com/difference-docker-containerd-runc-crio-oci/
How docker works with containerd
How k8s uses CRI
© 2022 - 2024 — McMap. All rights reserved.