Как установить, создать и управлять 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 и о том, как вы можете запускать, создавать контейнеры и управлять ими. Мы надеемся, что теперь вы сможете комфортно запускать свои контейнеры и управлять ими без особых затруднений.