Ответ 1
-
Контейнеры Linux (LXC) использовались до докера 0.9 (13 марта 2014 года, с выпуском версии 0.9, Docker отбросил LXC в качестве среды выполнения по умолчанию и заменил его собственной библиотекой libcontainer) в качестве одного драйвера выполнения от docker, и предложил пользовательский интерфейс для функций локализации ядра Linux. Это очень специфично для Linux
-
libcontainer (теперь
opencontainers/runc
) - это абстракция для поддержки более широкого спектра технологий изоляции, как описано в этой статье.
Это означает, что Docker абстрагируется от своей первоначальной реализации, позволяя другим поставщикам (таким как CoreOS) реализовывать свои собственные версии контейнеров.
Примечание: с тех пор (Какая разница между runc, containerd, docker?) Показывает:
В 2016 году контейнерное пространство находилось на подъеме, и компания Docker решила разделить монолит на отдельные части, некоторые из которых могут быть построены на других проектах - так сложилось в
containerd
. Это был Docker 1.11 (очень древняя история).
Containerd - это демон, который действует как API-интерфейс для различных сред выполнения контейнеров и ОС. При использованииcontainerd,
вы больше не работаете с системными вызовами, вместо этого вы работаете с объектами более высокого уровня, такими как снимок и контейнер, - остальное абстрагируется.
Если вы хотите глубже понятьcontainerd
, то есть проектная документация в их репозитории GitHub.
Под капотомcontainerd
используетrunc
для выполнения всей работы с Linux.
Смотрите больше на " Как containerd сравнивается с runC "