Контейнеры полезны по многим причинам. Они изолируют приложения от остальной системы. Они портативны и их легко клонировать и/или переносить в другие операционные системы. А в случае Linux они работают одинаково в любом дистрибутиве, без каких-либо адаптаций. Если вам нужно переместить контейнер из RedHat в Ubuntu, это должна быть простая операция копирования.
Docker – популярное решение, предназначенное для размещения одного приложения: например, сервера базы данных MySQL. LXD в чем-то похож, но предназначен для включения всей операционной системы. Это делает его полезным для некоторых сценариев. Например, вы можете развернуть контейнер LXD, установить сервер базы данных и http-сервер. Затем вы можете создать веб-сайт WordPress внутри. Теперь вы можете переключаться из облака в облако, просто переместив этот контейнер LXD туда, где он необходим, если вас не устраивает предыдущий провайдер. А поскольку клонировать контейнер легко, вы даже можете загрузить свой веб-сайт нескольким облачным провайдерам, чтобы создать резервную установку с высокой доступностью.
LXD не виртуализирует оборудование, как это делают QEMU или VirtualBox, а это означает, что он очень быстрый и обеспечивает почти нативную скорость выполнения.
Установить и настроить LXD
Откройте терминал и установите LXD, а также утилиты ZFS, которые помогут ускорить некоторые операции и сэкономить место на диске при работе с контейнерами.
sudo apt install zfsutils-linux lxd
Начать настройку LXD.
sudo lxd init
Нажмите ENTER, чтобы выбрать значения по умолчанию.
Для Size in GB of the new loop device (1GB minimum) [default=15GB]
вы можете выбрать другое значение, например «50 ГБ», если знаете, что будете создавать много контейнеров.
Найти и запустить образ дистрибутива LXD
Чтобы вывести список всех обр
Contents
Установить и настроить LXD
ge list ubuntu: arch=amd64Результатов будет много. Вы можете опустить arch=amd64
, если вам нужны изображения для других платформ, например процессоров ARM (устр
Найти и запустить образ дистрибутива LXD
у).На предыдущем рисунке результаты были ограничены (|head
), чтобы их было легче читать. Отпечаток Ubuntu 18.04 (84a71299044b) выделен. Если вы хотите запустить контейнер с этим дистрибутивом, команда будет такой:
lxc launch ubuntu:84a71299044b
На данный момент это вернет ошибку отказа в доступе. Вы должны состоять в группе «lxd». Ваш пользователь уже добавлен в эту группу, но чтобы сделать ее активной, вам необходимо выйти из системы и снова войти в нее. Если вы хотите избежать этого, используйте эту команду, заменив «пользователь» своим именем пользователя:
exec su - user
Теперь команды lxc работают без необходимости использования sudo.
Запуск контейнеров LXD с дистрибутивами, отличными от Ubuntu
Эта команда покажет вам, какие еще дистрибутивы доступны:
lxc image list images: arch=amd64
Чтобы запустить изображение, вместо отпечатка пальца вы также можете использовать псевдоним, если он есть в этом списке.
lxc launch images:debian/9
Если вы добавите строку в конец, вы сможете выбрать имя для своего контейнера:
lxc launch images:debian/9 wordpress-site
Управление контейнерами LXD
Чтобы вывести список всех контейнеров:
lxc list
Столбец «IPV4» особенно важен, если на этом экземпляре есть работающие службы. Например, если на экземпляре будет работать HTTP-сервер Apache, ввод «10.234.232.246» в браузере отобразит веб-сайт, размещенный в контейнере.
Чтобы остановить контейнер:
lxc stop name_of_container
Это может занять очень много времени (или привести к сбою) в дистрибутивах, отличных от Ubuntu. Лучше поднести оболочку к контейнеру и, оказавшись внутри, ввести systemctl poweroff
, чтобы остановить ее.
Если все остальное не помогло, вы можете принудительно остановиться с помощью:
lxc stop name_of_container --force
Чтобы начать:
lxc start name_of_container
Чтобы переместиться внутри контейнера:
lxc shell name_of_container
Вы можете устанавливать программы с помощью «sudo apt install» и делать все, что вы делаете в обычном дистрибутиве Linux, например, настраивать сервер Apache.