Поиск по сайту:

Как установить, создать и управлять LXC в Ubuntu/Debian


За последнее десятилетие сообщество разработчиков ПО с открытым исходным кодом наблюдало устойчивый переход к контейнеризации как к предпочтительному способу развертывания приложений благодаря многочисленным преимуществам, которые она предлагает, таким как мобильность, гибкость, повышенная безопасность и упрощение управления приложениями. Популярные технологии контейнеризации включают Docker, Podman и LXD.

Написанный на языке Go, LXD (произносится как Lekseed) описывается как системный контейнер нового поколения и менеджер виртуальных машин, который позволяет вам управлять контейнерами и виртуальными машинами из командной строки или с помощью REST API или другие сторонние инструменты. LXD — это проект с открытым исходным кодом, являющийся расширением LXC (Linux Containers), технологии виртуализации на уровне ОС.

LXC появился примерно в 2008 году, а LXD был запущен 7 лет спустя, в 2015 году, с теми же составными элементами, что и LXC. LXD создан для того, чтобы сделать контейнеры более удобными для пользователя и простыми в управлении.

Являясь расширением LXC, LXD предоставляет расширенные функции, такие как создание снимков и динамическая миграция. Он также предоставляет демон, который позволяет легко управлять контейнерами и виртуальными машинами. Он не предназначен для замены LXC, а направлен на улучшение удобства использования и обработки контейнеров на основе LXC.

В этом руководстве мы покажем, как создавать контейнеры LXC и управлять ими с помощью LXD в Debian/Ubuntu.

Шаг 1. Установите LXD в Ubuntu

Первым шагом является установка LXD. Есть два способа сделать это: вы можете установить из репозитория Ubuntu с помощью менеджера пакетов APT или использовать Snap.

Используя APT, сначала обновите систему:

sudo apt update

Затем установите гипервизор системного контейнера LXD следующим образом.

sudo apt install lxd

Используя snap, вы можете установить последнюю версию LXD.

sudo snap install lxd

Кроме того, вы можете установить последнюю версию LTS — LXD 4.0 следующим образом:

sudo snap install lxd --channel=4.0/stable

Вы можете проверить установленную версию LXD, как показано:

lxd --version

Если вы использовали привязку, вы можете убедиться, что пакет оснастки LXD был установлен, как показано:

snap list

Шаг 2. Инициализация службы LXD

Чтобы инициализировать или запустить гипервизор контейнера LXD, выполните команду:

sudo lxd init

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

В этом примере мы создали пул носителей под названием tecmint_pool с файловой системой ZFS и менеджером томов. Для остальных вопросов мы решили использовать параметры по умолчанию. Самый простой способ принять выбор по умолчанию — нажать кнопку ENTER на клавиатуре.

Подтвердите предоставленную информацию, выполнив команду:

sudo lxc profile show default

Вы можете дополнительно сузить его до созданного пула носителей. Команды ниже отображают подробную информацию о текущих пулах хранения.

sudo lxc storage list
sudo lxc storage show tecmint_pool

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

sudo lxc network show lxdbr0

Шаг 3. Создание контейнеров LXD в Ubuntu

Теперь давайте переключимся и создадим контейнеры Linux. Вы можете перечислить все готовые контейнеры, доступные для загрузки, с помощью команды:

sudo lxc image list images:

При этом заполняется огромный список всех контейнеров в различных операционных системах, таких как Ubuntu, CentOS, Debian и AlmaLinux, и это лишь некоторые из них.

Вы можете сузить его до конкретного дистрибутива следующим образом:

sudo lxc image list images: | grep -i centos
sudo lxc image list images: | grep -i debian

В этом примере мы перечисляем доступные контейнеры.

sudo lxc image list images: | grep -i ubuntu

Теперь мы собираемся создать наш первый контейнер. Синтаксис создания контейнера следующий:

sudo lxc launch images:{distro}/{version}/{arch} {container-name}

Теперь мы создадим два контейнера из Ubuntu 20 и Debian 10 соответственно:

sudo lxc launch images:ubuntu/focal tecmint-con1
sudo lxc launch images:debian/10 tecmint-con2

В приведенных выше примерах мы создали два контейнера: tecmint-con1 и tecmint-con2.

Чтобы вывести список созданных контейнеров, выполните команду:

sudo lxc list

В выводе мы видим список наших двух контейнеров.

Чтобы получить доступ к оболочке контейнера LXC, выполните команду:

sudo lxc exec tecmint-con1 bash

Как только вы получили доступ к оболочке, обратите внимание, что приглашение изменится, указывая, что вы работаете от имени пользователя root.

Чтобы выйти из контейнера, выполните команду:

exit

Шаг 4. Управление контейнерами LXD в Ubuntu

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

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

sudo lxc list

Чтобы отобразить подробную информацию о контейнере LXC, используйте синтаксис:

sudo lxc info container-name

Это предоставит вам такую информацию, как имя контейнера, архитектура, дата создания, состояние сетевых интерфейсов, пропускная способность, процессор, память и использование диска, а также несколько показателей.

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

sudo lxc stop container-name

Например, чтобы остановить контейнер tecmint-con1, выполните команду:

sudo lxc stop  tecmint-con1

Снова перечислите контейнеры, чтобы подтвердить, что контейнер остановлен.

sudo lxc list

Альтернативно вы можете перечислить запущенные или остановленные контейнеры следующим образом:

sudo lxc list | grep -i STOPPED
sudo lxc list | grep -i RUNNING

Чтобы запустить контейнер LXC, используйте синтаксис:

sudo lxc start container-name

Например, чтобы запустить контейнер tecmint-con1, выполните команду:

sudo lxc start tecmint-con1

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

sudo lxc stop container1 container2
sudo lxc start container1 container2

Например, чтобы остановить все контейнеры, запустите:

sudo lxc stop tecmint-con1 tecmint-con2

Чтобы перезапустить контейнер LXC, используйте синтаксис:

sudo lxc restart container-name

Например, чтобы перезапустить контейнер tecmint-con1, выполните команду:

sudo lxc restart tecmint-con1

Альтернативно вы можете передать несколько контейнеров в одной команде:

sudo lxc start container1 container2

Например, чтобы перезапустить все контейнеры, выполните:

sudo lxc restart tecmint-con1 tecmint-con2

Чтобы удалить контейнер LXC, сначала остановите его, а затем удалите. Например, чтобы удалить контейнер tecmint-con2, выполните команду:

sudo lxc stop tecmint-con2
sudo lxc delete tecmint-con2

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