Типичный стек контейнеров docker, известный мне: docker (клиент) -> dockerd -> containerd -> run C. Тогда вы также услышите о libcontainer . Мне интересно, где libcontainer помещается в указанном выше стеке и какова его роль / назначение.
Что началось на github.com / docker / libcontainer теперь, похоже, продолжается на github.com / opencontainers / run c / tree / master / libcontainer
, что означает, что теперь мы иметь: docker → containerd → запустить c → libcontainer
Части из: История низкоуровневых Linux контейнеров следуют.
В начале:
... вышестоящие разработчики Docker, включая некоторых членов моей команды Red Hat, решили, что им нужен golang нативный способ запуска контейнеров, а не запуск отдельного приложения. Началась работа над libcontainer, как родной golang библиотекой для запуска контейнеров ...
libcontainer
и после того, как была сформирована Open Container Initiative (OCI):
... libcontainer части Docker были выделены и переданы в дар OCI. Разработчики Docker и наши инженеры помогли создать новый интерфейсный инструмент для чтения файла OCI Runtime Specification JSON и взаимодействия с libcontainer для запуска контейнера. Этот инструмент под названием runc также был подарен OCI.
runc