Как "lxd" отличается от lxc/docker?
Вопросы
- Как lxd обеспечивает полную функциональность операционной системы внутри контейнеров, а не только отдельных процессов?
- Как он отличается от обложек lxc/docker +?
- Он похож на контейнер, который запущен с docker + supervisor/wrapper script, чтобы содержать несколько процессов в одном контейнере?
Другими словами:
- Что я могу сделать с lxd, который я не могу сделать с некоторыми обертками над lxc и docker?
- Почему он доступен только в ubuntu, если они используют основные функции ядра (пространства имен и cgroup)?
Ответы
Ответ 1
LXD работает совместно с LXC и не предназначен для замены или замены LXC. Вместо этого его целью стало упрощение использования на LXC-контейнерах благодаря добавлению внутреннего демона, поддерживающего REST API, и простого клиента CLI, который работает с локальным демоном и удаленными демонами через REST API.
LXD больше похож на хост докера.
Ответ 2
LXD
основан на liblxc
, его целью является управление некоторым lxc
с добавленными возможностями, такими как моментальные снимки или живая миграция. LXD
связан с lxc
, и они ориентированы по ОС.
Docker
гораздо больше ориентирован на приложения, основанный в начале на lxc
, но теперь не зависящий от lxc
, он может использовать openvz
или что-то еще. Docker
фокусируется только на приложении с lib и зависимостью, а не на ОС.
посмотрите на это больше:
https://www.flockport.com/lxc-vs-lxd-vs-docker-making-sense-of-the-rapidly-evolving-container-ecosystem/
С уважением.
Ответ 3
Как lxd предоставляет полную функциональность операционной системы в контейнерах, а не только отдельные процессы?
Контейнеры - изолированные системы Linux, использующие возможности групп для ограничения cpu/memory/network/etc в ядре Linux без необходимости запуска полной виртуальной машины.
LXD использует возможности, предоставляемые liblxc (основанные на LXC), и из этого вытекают возможности для полной функциональности ОС.
Как он отличается от обложек lxc/docker +?
LXD использует liblxc из LXC. Docker больше ориентирован на приложения, только основной процесс для вашего приложения внутри контейнера (используя libcontainer теперь по умолчанию, Docker сначала использовал liblxc)
Совместим ли он с контейнером, который запускается с помощью docker + supervisor/wrapper script содержать несколько процессов в одном контейнере?
Нечто похожее. Разница между LXD и Docker заключается в том, что Docker является контейнером приложений, LXD является системным контейнером. LXD использует upstart/systemd как основной процесс внутри контейнера и по умолчанию готов к полной среде VM с очень легким использованием памяти/процессора. Да, вы можете построить свой докер с помощью supervisorctl/runit, но вам нужно выполнить вручную этот процесс. Вы можете проверить, как это делается в http://phusion.github.io/baseimage-docker/, которые делают что-то подобное внутри контейнера.
Что я могу сделать с lxd, который я не могу сделать с некоторыми обертками над lxc и docker?
живые миграции контейнеров, использование ваших контейнеров, таких как полные виртуальные машины, точная конфигурация для выделенных ядер процессора/памяти/сетевого ввода-вывода для использования в вашем контейнере, запуск вашего контейнерного процесса в непривилегированном режиме (корневой процесс внутри вашего контейнера!= root на вашем хосте) по умолчанию Docker работает в привилегированном режиме, только теперь в Docker 1.10 они реализуют непривилегированный режим, но вам нужно просмотреть (и, возможно, переписать) свои файлы Docker, потому что многие вещи не будут работать в непривилегированном режиме.
LXD и Docker - это разные вещи. LXD предоставляет вам "полную ОС" в контейнере, и вы можете использовать любое средство развертывания, которое работает в виртуальной машине для развертывания приложений в LXD. С Docker ваше приложение находится внутри контейнера, и вам нужны различные инструменты для развертывания приложений в Docker и показатели производительности.
Почему он доступен только в ubuntu, если они используют основные функции ядра (пространства имен и cgroup)?
LXD имеет коммерческую поддержку от Canonical, если это необходимо, но вы можете создать LXD в Centos 7, ArchLinux (с исправленным ядром) проверить https://github.com/lxc/lxd. Gentoo теперь поддерживает LXD https://wiki.gentoo.org/wiki/LXD.