Чем "lxd" отличается от lxc/docker?

вопросы

  • как lxd обеспечивает полную функциональность операционной системы в контейнерах, а не только отдельные процессы?
  • чем он отличается от lxc / docker + обертки?
  • похоже ли это на контейнер, который запускается с помощью скрипта docker + supervisor/wrapper, чтобы содержать несколько процессов в одном контейнере?

другими словами:

  • что я могу сделать с lxd, что я не могу сделать с некоторыми обертки над lxc и docker ?
  • почему он доступен только в ubuntu, если они используют функции ядра mainline (пространства имен и cgroup )?

3 ответов


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/

С уважением.


Как lxd обеспечивает полную функциональность операционной системы в контейнерах, а не только отдельные процессы?

контейнеры-это изолированные системы Linux, использующие возможности групп для ограничения cpu/memory/network / etc в ядре Linux, без необходимости запуска полной виртуальной машины.

LXD использует возможности, предоставляемые liblxc (который основан на LXC), и из этого приходят возможности для полной функциональности ОС.

чем он отличается от lxc / docker + обертки?

LXD используйте liblxc из LXC. Docker больше ориентирован на приложение, только основной процесс для вашего приложения внутри контейнера (используя libcontainer по умолчанию, Docker сначала использовал liblxc)

похоже ли это на контейнер, который запускается с помощью docker + supervisor/wrapper скрипт, содержащий несколько процессов в одном контейнере?

что-то подобное. Этот разница между LXD и Докер, что докер контейнер приложения, LXD является контейнерная система. LXD использует upstart/systemd как основной процесс внутри контейнера и по умолчанию готов быть полной средой VM с очень легким использованием памяти / процессора. Да, вы можете построить свой докер с supervisorctl / runit, но вам нужно сделать вручную этот процесс. Вы можете проверить, как это делается вhttp://phusion.github.io/baseimage-docker/ которые делают что-то подобное внутри контейнер.

что я могу сделать с lxd, что я не могу сделать с некоторыми обертками над lxc и docker ?

живые миграции контейнеров, использовать контейнеры, как полные виртуальные машины, точная конфигурация для выделенных ядер ЦП / памяти / сети ввода-вывода для использования в контейнере, запустить процесс контейнера в непривилегированном режиме (корневой процесс внутри контейнера != root process в вашем хосте) по умолчанию Docker работают в привилегированном режиме, только теперь в Docker 1.10 они реализуйте непривилегированный режим, но вам нужно просмотреть (и, возможно, переписать) ваши Dockerfiles, потому что многие вещи не будут работать в непривилегированном режиме.

LXD и Docker-разные вещи. LXD дает вам" полную ОС " в контейнере, и вы можете использовать любой инструмент развертывания, который работает в виртуальной машине для развертывания приложений в LXD. С Docker ваше приложение находится внутри контейнера, и вам нужны разные инструменты для развертывания приложений в Docker и Do metric для производительности.

почему он доступен только в ubuntu, если они используют функции ядра mainline (пространства имен и cgroup )?

LXD ПО и коммерческая поддержка от Canonical, если это необходимо, но вы можете построить LXD ПО в CentOS 7, ArchLinux (с ядром пропатченный) проверить https://github.com/lxc/lxd. В Gentoo поддерживает LXD по Теперь https://wiki.gentoo.org/wiki/LXD.


LXD работает совместно с LXC и не конструировано для того чтобы заменить или вытеснить LXC. Вместо этого он предназначен для упрощения использования контейнеров на основе LXC путем добавления фонового демона, поддерживающего REST API, и простого клиента CLI, который работает как с локальным демоном, так и с удаленными демонами через REST API.

LXD больше похож на хост docker.