Dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim

Этот материал действительно запутался сейчас. Может кто-нибудь, пожалуйста, объясните, что происходит. Просто прямая разница в одном вкладыше.

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

Спасибо

Ответ 1

dockerd - сам демон Docker. Компонент самого высокого уровня в вашем списке, а также единственный продукт "Docker", указанный в списке. Предоставляет все приятные функции UX Docker.

(docker-) containerd. Также демон, прослушивающий сокет Unix, предоставляет конечные точки gRPC. Управляет всеми задачами управления контейнером низкого уровня, хранением, распределением изображений, подключением к сети и т.д.

(docker-) containerd-ctr. Легкий CLI для прямого взаимодействия с containerd. Подумайте об этом как о том, как "докер" должен "докер".

(docker-) runc - легкий двоичный код для фактически запущенных контейнеров. Работает с низкоуровневым интерфейсом с возможностями Linux, такими как группы, пространства имен и т.д.

(docker-) containerd-shim. После того, как runC фактически запускает контейнер, он выходит (что позволяет нам не иметь длительных процессов, ответственных за наши контейнеры). Прокладка - это компонент, который находится между контейнером и runc, чтобы облегчить это.

Ответ 2

Из документации:

runC построен на libcontainer, которая является той же библиотекой контейнеров, которая обеспечивает установку движка Docker. До версии 1.11 механизм Docker использовался для управления томами, сетями, контейнерами, образами и т.д. Теперь архитектура Docker разбита на четыре компонента:

Docker engine 
containerd
containerd-shm
runC. 

Двоичные файлы соответственно называются:

docker
docker-containerd
docker-containerd-shim
docker-runc.

https://i.stack.imgur.com/lAtSR.png

https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426