Использует ли docker для внутреннего использования системные вызовы, такие как chroot, unshare, nsenter и т. Д. Или оболочка для lxc
Я просматривал статью о создании контейнеров с нуля, не используя docker, просто используя системные вызовы Linux, такие как chroot, unshare, nsenter и т. Д.
Делает ли docker внутреннюю оболочку вокруг этих системных вызовов, похоже, что docker exec не использует nsenter согласно этому ответу
Если докер использует эти вызовы, какой двоичный код golang он использует для получения этих системных вызовов.
Или docker - обертка вокруг lxc, но мне не кажется, что это ответ
Может ли кто-нибудь указать мне точный материал низкого уровня (системные вызовы / lxc и т. Д.), Который докер в настоящее время использует для создания контейнера.
1 ответ
Докер не является фанатом LXC. В прежние времена для запуска контейнеров использовался механизм на основе LXC, но он был заменен собственной реализацией.
Поскольку Docker является проектом с открытым исходным кодом, вы можете точно увидеть , что он делает, просматривая исходный код (который с тех пор был переименован в "moby").
Фактическое создание контейнеров обрабатывается компонентом libcontainer.