Разница между LXC и libcontainer

Просматривая документы docker, я обнаружил, что docker теперь использует libcontainer вместо LXC. Кто-нибудь знает, как лучше работает libcontainer (если так..), чем LXC?

Ответ 1

  • Контейнеры Linux (LXC) использовались до докера 0.9 (13 марта 2014 года, с выпуском версии 0.9, Docker отбросил LXC в качестве среды выполнения по умолчанию и заменил его собственной библиотекой libcontainer) в качестве одного драйвера выполнения от docker, и предложил пользовательский интерфейс для функций локализации ядра Linux. Это очень специфично для Linux

  • libcontainer (теперь opencontainers/runc) - это абстракция для поддержки более широкого спектра технологий изоляции, как описано в этой статье.

http://blog.docker.com/wp-content/uploads/2014/03/docker-execdriver-diagram.png

Это означает, что Docker абстрагируется от своей первоначальной реализации, позволяя другим поставщикам (таким как CoreOS) реализовывать свои собственные версии контейнеров.


Примечание: с тех пор (Какая разница между runc, containerd, docker?) Показывает:

В 2016 году контейнерное пространство находилось на подъеме, и компания Docker решила разделить монолит на отдельные части, некоторые из которых могут быть построены на других проектах - так сложилось в containerd. Это был Docker 1.11 (очень древняя история).
Containerd - это демон, который действует как API-интерфейс для различных сред выполнения контейнеров и ОС. При использовании containerd, вы больше не работаете с системными вызовами, вместо этого вы работаете с объектами более высокого уровня, такими как снимок и контейнер, - остальное абстрагируется.
Если вы хотите глубже понять containerd, то есть проектная документация в их репозитории GitHub.
Под капотом containerd использует runc для выполнения всей работы с Linux.

Смотрите больше на " Как containerd сравнивается с runC "

containerd

Ответ 3

Насколько мне известно... LXC был драйвером исполнения по умолчанию для механизма докера для выполнения его контейнера/пространства имен и прочего. Docker разработал libcontainer и добавил в свой механизм докеров. Поправь меня, если я ошибаюсь.

Ответ 4

Ну, разве это не в контейнере, это ядро времени выполнения, которое формирует основу для Docker?