LXD

Учебное пособие по LXD

Учебное пособие по LXD

Основы LXD: что это такое? И как это использовать?

LXD-контейнеризация не получила такого внимания, как Docker, но на самом деле она намного ближе к основной идее виртуализации операционной системы. Но прежде чем мы дойдем до этого, давайте поговорим о современной виртуализации аппаратного уровня.

Аппаратная виртуализация

Традиционный способ работы VMware, VirtualBox, KVM и аналогичных технологий заключается в следующем: у вас есть компьютер серверного уровня, скажем, высокопроизводительный процессор Xeon с 512 ГБ оперативной памяти, известный как «голый металл». Вы устанавливаете на нем операционную систему, которая затем запускает VMware, Virtualbox или KVM.

Это разные гипервизоры, и операционная система, которая их запускает, - это операционная система хоста.

Теперь, что предлагает гипервизор: он эмулирует ЦП, сетевые интерфейсы, диски хранения, память, ввод-вывод и другие ресурсы, так что поверх этого набора может быть установлена ​​новая операционная система виртуальное оборудование. Эта новая операционная система гостевая операционная система и он работает на виртуальном оборудовании, как если бы он был установлен на физическом компьютере, но есть загвоздка.

Если вы думаете: «Но эмуляция различных аппаратных устройств с использованием реального оборудования звучит неэффективно и медленно.«Вы абсолютно правы. Виртуализация на аппаратном уровне медленная и неэффективная.

Более того, операционные системы сами по себе помешаны на контроле. Если вы выделите гостевой ОС 1 ГБ ОЗУ и 2 ядра ЦП, она с радостью заберет все ресурсы, даже если приложения, работающие внутри нее, используют только их часть. Эти ресурсы будут недоступны для гипервизора для использования где-либо еще.

Это сильно ограничивает количество виртуальных машин, которые могут работать поверх гипервизора. Если вы поставщик облачного хостинга, это означает, что ваша прибыль сильно пострадает.


Контейнерный способ делать вещи

Идея виртуализированного оборудования выбрасывается из окна, когда мы начинаем говорить о контейнерах и, в частности, о LXD. Вместо эмуляции отдельных аппаратных ресурсов мы пытаемся виртуализировать операционную систему.

Когда контейнер LX запускается, ОС предлагает себя (то есть ядро, библиотеки, все ресурсы, доступные для него) приложениям, работающим внутри контейнера. Пользователи и приложения внутри этого контейнера не будут знать о приложениях и пакетах, запущенных за его пределами, и наоборот.

Что касается распределения ресурсов, вы можете просто сделать пометку, чтобы не разрешать конкретному контейнеру использовать более, скажем, 2 ГБ ОЗУ и 2 ЦП. Таким образом, когда приложения, работающие внутри контейнера, не делают ничего интенсивного, ресурсы могут быть выделены в другом месте в среде хоста.

Однако, когда приложения работают под большой нагрузкой, они получают производительность на «голом железе»!

Очевидным недостатком этого является то, что вы не можете запускать произвольную операционную систему в качестве гостя. Поскольку разные операционные системы имеют совершенно разные архитектуры. К счастью для пользователей GNU / Linux, ядро ​​Linux предлагает настолько тесную совместимость с ABI, что вы можете эмулировать разные дистрибутивы поверх одного и того же ядра. Таким образом, вы можете запускать двоичные файлы CentOS и приложения Ubuntu на одном и том же металле, но в разных контейнерах.


LXD init

LX-контейнеризация - это хорошо протестированная и надежная технология для операционных систем на базе Linux. Он состоит из двух основных компонентов: один - LXC, который управляет конфигурациями контейнеров, файлами изображений и т. Д., А также есть LXD, который является демоном, работающим на вашем хосте, обеспечивающим соблюдение всех политик, установленных для контейнеров.

По умолчанию он устанавливается на Ubuntu Server 16.04 LTS, если вы используете настольный дистрибутив, запустите:

$ apt установить lxd lxd-client

Как только это будет сделано, вам потребуется инициализировать различные параметры. Следующая команда проведет вас через них:

$ lxd init

Здесь вы можете выбрать параметры по умолчанию.  Самым сложным будет настройка сетевых интерфейсов. Когда вас спросят о настройке сети LXD, выберите вариант по умолчанию да.

1 Ответьте да, еще раз, когда будет предложено настроить сеть

В следующем окне будет запрошено имя сетевого интерфейса (как видно на хосте), оставьте значение по умолчанию lxdbr0.

Настройка подсети IPv4 будет после этого. Это позволит различным контейнерам LX общаться друг с другом, как если бы они были разными компьютерами в локальной сети. Для этого выберите "Да".

Далее будет несколько 10.202.Икс.X-адреса показаны каждый с разной ролью в этой подсети. Вы можете нажать Enter без необходимости настраивать параметры. При запросе конфигурации NAT выберите да.

Это позволяет вашим контейнерам подключаться к Интернету, используя общедоступный IP-адрес хоста, почти так же, как ваш ноутбук и другие устройства через домашний маршрутизатор (с переадресацией портов).

Последний вариант подсети IPv6 является необязательным, и я бы рекомендовал вам пока опустить его. Сказать нет, при запросе параметров IPv6.


Раскручивая контейнеры

Чтобы запустить новый экземпляр, скажем, Ubuntu 16.04 выполните следующую команду:

$ lxc запустить ubuntu: 16.04 name_of_your_container

Поскольку вы впервые запускаете сервер Ubuntu, потребуется время, чтобы получить образ контейнера из удаленных репозиториев. Как только это будет сделано, вы сможете увидеть подробную информацию о запущенном контейнере, выполнив команду:

Список $ lxc

В этом примере имя контейнера cont1.

Если вы хотите попасть внутрь контейнера, выполните команду;

$ lxc exec имя_вашего_контейнера bash

Вы попадете в оболочку bash, работающую внутри этого контейнера. Он будет пахнуть и ощущаться как свежая установка Ubuntu 16.04, и вы можете свободно устанавливать пакеты внутри него и проводить различные эксперименты, не рискуя своей основной установкой.

Теперь, когда у вас есть файл изображения, хранящийся локально в вашей хост-системе, вы можете очень быстро развернуть контейнеры Ubuntu и использовать их в качестве одноразовых систем.

Чтобы остановить и удалить контейнер LX, запустите;

$ lxc stop имя_контейнера $ lxc удалить имя_контейнера 

Используйте команду запуска lxc, как вы делали в первый раз, чтобы запускать новые контейнеры.


Куда пойти отсюда

Теперь, когда вы знаете, что такое архитектура LXD, вы можете начать изучать такие темы, как сеть и хранилище для контейнеров, а также способы их настройки в соответствии с вашей рабочей нагрузкой.

Вы также можете узнать об основных различиях между Docker и LXD и о том, что на самом деле может лучше соответствовать вашим потребностям. Если вы хотите использовать ZFS в качестве серверной части хранилища (как вам следует!) вы можете ознакомиться с этим руководством по основам ZFS.

Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...