Инструмент Canonical LXD, ранее поддерживаемый публично под эгидой проекта Linux Containers, спонсируемого Canonical, теперь используется внутри компании.
В День независимости США Canonical объявила, что спонсируемый ею проект LXD больше не является независимым. Ранее разработка проекта LXD велась как часть более широкого проекта Linux Containers. В дискурсе Ubuntu есть пост с часто задаваемыми вопросами, в котором немного больше информации, но все же не очень много.
LXD существует уже довольно давно: Рег рассказал о своем объявлении еще в 2014 году и включении первого выпуска в Ubuntu 15.10 в следующем году. LXC довольно стар: мы впервые упомянули о нем как о многообещающем варианте в 2011 году, за пару лет до первого запуска Docker.
В сети возникла значительная путаница по поводу этого шага, возможно, потому, что как инструмент LXD зависит от базовой функциональности LXC; LXD даже использует некоторые инструменты командной строки LXC. Однако это не одно и то же, и это только усугубляет ситуацию. LXC — всего лишь один из множества инструментов для управления контейнерами поверх ядра Linux.
К 2016 году в этом пространстве уже было достаточно претендентов, чтобы мы пытались объяснить некоторые различия. Всего через год ситуация стала еще хуже, поскольку различные кредиторы начали запускать гибридные инструменты, сочетающие в себе некоторые функции контейнеров и виртуальных машин.
Вкратце, LXC — это инструмент для создания и управления контейнерами на хостах Linux. Однако в наши дни у него много конкурентов, отчасти благодаря широкой совместимости, обеспечиваемой спецификациями инициативы OCI. Docker, конечно, один из самых известных, и в самом начале своего существования он фактически использовал LXC для запуска своих контейнеров. В наши дни альтернативные системы включают crun (реализованный на C), runc (реализованный на Go) и systemd-nspawn, который, как следует из названия, является частью системы инициализации systemd. Американский банк Capital One, в штате которого раньше работало много технарей, хорошо знаком с технологиями.
В наши дни наибольший интерес к запуску контейнеров вызывает запуск больших групп вещей, управляемых инструментами оркестрации, такими как знаменитый Kubernetes. Каждый хочет стать следующим миллиардером в области доткомов, а для этого необходимо очень масштабируемое присутствие в Интернете. Один из способов добиться этого — разбить вашу серверную инфраструктуру на микросервисы: множество маленьких «контейнеров приложений», каждый из которых содержит один двоичный файл и необходимые библиотеки, от которых он зависит. Теория состоит в том, что автоматизируя координацию многих из них, когда вы становитесь вирусным, ваше веб-присутствие может масштабироваться очень быстро, без вмешательства человека — и без оплаты множества серверных виртуальных машин, которые простаивают 99% время.
Это означает, что центр внимания технологий сместился на инструменты для управления целыми группами контейнеров приложений — «модулями», на языке Kubernetes — и на технические вопросы, такие как их запуск без привилегий root и без единого демона, контролирующего все они, что привело к таким инструментам, как Podman от Red Hat.
Менее модными, но более практичными для многих людей являются системные контейнеры, которые содержат весь дистрибутив Linux, включая его систему инициализации — все, кроме ядра. Системные контейнеры могут существовать очень долго и используются так же, как виртуальные машины, за исключением того, что все они совместно используют один и тот же пул памяти и дисков. Контейнеры приложений создаются и уничтожаются по запросу: вам не нужно переносить их с одного хост-сервера на другой, вы просто убьете их и запустите новые.
Ситуация немного отличается, если контейнер, скажем, содержит почтовый сервер с 1000 одновременных пользователей. Это тип работы, на который нацелен LXD. LXD использует LXC для создания и запуска системных контейнеров, которыми можно управлять как виртуальными машинами: вы можете выделить им оборудование, перенести их с одного хоста на другой и так далее. (Однако, чтобы замутить воду, LXD также может управлять настоящими виртуальными машинами, начиная с версии 4.0.) Он даже имеет графический интерфейс на основе браузера для визуального управления экземплярами.
Как отмечается в прекрасном сравнении LXC и LXD, проведенном LWN, Canonical является основным коммерческим спонсором обоих проектов. LXD является кроссплатформенным и может использоваться в нескольких дистрибутивах: в основном он распространяется в виде пакета Snap, но некоторые дистрибутивы также включают версии в исходном пакете, такие как Alpine, Arch и Gentoo.
LXC — это отдельный инструмент, который продолжает существовать самостоятельно, даже если он уже не в моде. Вы можете использовать LXC без использования LXD, но LXD зависит от LXC для некоторых своих функций. Таким образом, весьма вероятно, что Canonical продолжит спонсировать разработку LXC, и что оба инструмента останутся доступными в различных дистрибутивах, а не только в Ubuntu. ®