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

Вопросов

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

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

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

person resultsway    schedule 25.05.2015    source источник


Ответы (3)


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

Контейнеры - это изолированные системы Linux, использующие возможности cgroups для ограничения количества процессоров / памяти / сети / и т. Д. В ядре Linux без необходимости запуска полной виртуальной машины.

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

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

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

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

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

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

живые миграции контейнеров, используйте ваши контейнеры, такие как полные виртуальные машины, точная конфигурация для выделения ядер процессора / памяти / сетевого ввода-вывода для использования в вашем контейнере, запустите процесс контейнера в непривилегированном режиме (корневой процесс внутри вашего контейнера! = корневой процесс в ваш хост) по умолчанию 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.

person Yonsy Solis    schedule 08.02.2016

LXD основан на liblxc, его цель - управлять некоторыми lxc с дополнительными возможностями, такими как моментальные снимки или динамическая миграция. LXD связан с LXC, и они ориентированы на ОС.

Docker в большей степени ориентирован на приложение, изначально основанный на LXC, но теперь независимый от LXC, он может использовать openvz или что-то еще. Docker фокусируется только на приложении с библиотекой и зависимостью, а не на ОС.

посмотрите здесь: https://www.flockport.com/lxc-vs-lxd-vs-docker-making-sense-of-the-rapidly-evolving-container-ecosystem/

С Уважением.

person dominix    schedule 20.07.2015

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

LXD больше похож на хост докеров.

person resultsway    schedule 20.02.2016