Установите LXC (контейнеры Linux) в RHEL, Rocky и AlmaLinux.
LXD описывается как менеджер контейнеров и виртуальных машин нового поколения, который предлагает захватывающие возможности для систем Linux, работающих внутри контейнеров или в качестве виртуальных машин.
Он предоставляет образы для огромного количества дистрибутивов Linux с поддержкой широкого выбора серверных хранилищ и типов сетей. Он также предоставляет возможность установки изображений на отдельный ПК/ноутбук и даже в облачный экземпляр.
LXD позволяет управлять контейнерами и виртуальными машинами тремя способами. Вы можете использовать клиент lxc или инструмент командной строки, REST API или даже сторонние интеграции.
Возможности LXD
Примечательные функции LXD включают в себя:
- LXD основан на образах для широкого выбора дистрибутивов Linux.
- Он построен с учетом безопасности как главного приоритета.
- Он предоставляет REST API и инструмент командной строки lxc для взаимодействия с контейнерами.
- Он обеспечивает поддержку широкого спектра серверных частей хранения, томов хранения и пулов хранения.
- Управление сетью осуществляется посредством создания мостовых сетей и межхостовых туннелей.
- Расширенный контроль над ресурсами, такими как ЦП, ОЗУ, использование диска, блочный ввод-вывод и ресурсы ядра.
- Гибкость и масштабируемость. Вы можете развернуть контейнеры на своем ПК и настроить кластер, который может объединять тысячи контейнеров на различных узлах.
Что такое LXC?
Не путать с клиентским инструментом командной строки lxc, предоставляемым LXD, LXC (Linux Container) популярная технология виртуализации на уровне ОС, которая использует мощный API и другие инструменты, позволяющие пользователям беспрепятственно создавать контейнеры и виртуальные машины и управлять ими на одном хосте. Он включает в себя шаблоны, язык инструментов и привязки библиотек.
Возможности LXC
LXC использует следующие функции ядра для управления процессами:
- Пространства имен ядра: pid, mount, uts network и user.
- CGroups (контрольные группы).
- Chroots — использование Pivot_root.
- Политика Seccomp.
- Профили SELinux и Apparmor.
Linuxcontainers.org — это головной проект, лежащий в основе LXD и LXC. Его цель — предложить дистрибутив и платформу, независимую от поставщиков, для контейнерных технологий Linux.
Закончив с этим введением, мы теперь продемонстрируем, как создавать контейнеры LXC и управлять ими в дистрибутивах Linux на базе RHEL, таких как CentOS, Rocky Linux,< и AlmaLinux.
Требования
Рабочая операционная система Linux с минимальной установкой:
- Установка RHEL Linux
- Установка CentOS Linux
- Установка Рокки Линукс
- Установка АлмаЛинукс
Шаг 1. Установите для SELinux разрешительный режим.
Сразу же мы начнем с настройки SELinux и установки для него разрешающего режима. Но прежде чем мы это сделаем, давайте обновим системные пакеты следующим образом:
sudo dnf update
Чтобы установить для SELinux разрешающий режим, выполните команду:
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Чтобы это вступило в силу, перезагрузите сервер.
sudo reboot
И подтвердите статус SELinux.
getenforce
Шаг 2. Установите репозиторий EPEL
EPEL — это репозиторий Проекта Fedora, который предоставляет набор высококачественных пакетов для RedHat Enterprise Linux и других дистрибутивов на основе RHEL.
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo yum install epel-release
Шаг 3. Добавьте параметры ядра
Прежде чем мы установим LXD, необходимы некоторые дополнительные параметры. Поэтому переключитесь на пользователя root:
su -
И добавьте параметры следующим образом.
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
echo "user.max_user_namespaces=3883" | sudo tee -a /etc/sysctl.d/99-userns.conf
Как только параметры будут установлены, продолжайте и включите Snap.
Шаг 4. Установите и включите Snap
Самый простой способ установить LXD на RHEL 8 — установить его как пакет snap. Но сначала давайте установим snap следующим образом.
sudo dnf install snapd
При этом будет установлен демон или служба napd вместе с другими зависимостями Python, как показано.
Установив Snap, продолжите работу и включите основной коммуникационный сокет snap.
sudo systemctl enable --now snapd.socket
Кроме того, включите классическую поддержку, создав символическую ссылку с /var/lib/snapd/snap на /snap.
sudo ln -s /var/lib/snapd/snap /snap
Чтобы обновить пути привязки, перезагрузите систему.
sudo reboot
Шаг 5. Установите диспетчер контейнеризации LXD
Существует два способа установки LXD из привязки. Вы можете установить последнюю версию LXD, как показано.
sudo snap install —-classic lxd
Альтернативно вы можете установить последнюю стабильную версию LTS следующим образом:
sudo snap install lxd --channel=4.0/stable
Чтобы иметь возможность выполнять команды lxc без переключения на пользователя sudo, добавьте текущего вошедшего в систему пользователя в группу lxd.
sudo usermod -aG lxd $USER
Убедитесь, что пользователь добавлен в группу lxd, перечислив все группы, к которым он принадлежит.
groups tecmint
Затем выполните команду newgrp следующим образом.
newgrp lxd
Команда изменяет текущий идентификатор группы во время сеанса входа в систему. Он устанавливает текущий идентификатор группы для именованной группы, то есть lxd.
Шаг 6: Инициализация среды LXD
Прежде чем мы начнем создавать контейнеры LXD и управлять ими, нам необходимо инициализировать среду LXD, выполнив команду.
lxc init
Далее следует ряд подсказок, которые позволят вам настроить среду. Значения по умолчанию будут работать нормально, но вы можете указать свои собственные предпочтения.
Мы создали пул носителей под названием tec-pool с опцией lvm в качестве серверной части.
Чтобы проверить только что настроенную среду LXD, вы можете использовать ряд команд. Например, чтобы отобразить профиль LXD по умолчанию, выполните:
lxc profile show default
Чтобы отобразить сетевые адаптеры и адреса IPv4 и IPv6, выполните:
lxc network list
Вы можете еще больше сузить его и отобразить более подробную информацию об интерфейсе lxdbr0 следующим образом.
lxc network show lxdbr0
Вы также можете проверить пул носителей.
lxc storage list
Вы также можете получить подробную информацию о пуле хранения данных.
lxc storage show tec-pool
Чтобы просмотреть список запущенных контейнеров lxc, выполните команду:
lxc list
На данный момент у нас еще нет работающих контейнеров. Таким образом, вы получите пустую таблицу только с метками столбцов.
Шаг 7. Листинг готовых образов контейнеров LXC
Как и Docker, платформа LXC предоставляет репозиторий готовых образов, из которых можно создавать контейнеры. Чтобы просмотреть все готовые образы для всех операционных систем, включая виртуальные машины, выполните команду:
lxc image list images:
При этом заполняется огромный список образов контейнеров и виртуальных машин для всех операционных систем. Чтобы сузить список до конкретного дистрибутива Linux, используйте синтаксис:
lxc image list images: grep -i os-type
Например, чтобы найти доступные изображения для Rocky Linux, выполните команду:
lxc image list images: grep -i rocky
Если вы ищете образы Debian, выполните команду:
lxc image list images: grep -i debian
Шаг 8. Запуск контейнеров LXC
Чтобы запустить контейнеры lxc, используйте синтаксис:
lxc launch images:{distro}/{version}/{arch} {container-name-here}
Здесь мы запустим 2 контейнера: tec-container1 из Debian 10 и tec-container2 из Rocky Linux 8. .
lxc launch images:debian/10/amd64 tec-container1
lxc launch images:rockylinux/8/amd64 tec-container2
Чтобы просмотреть контейнеры lxc, выполните команду:
lxc list
В выводе отображается множество информации о контейнерах. Сюда входят имена контейнеров, состояние (работает или остановлено), адреса IPv4 и IPv6, тип (контейнер или виртуальная машина) и количество снимков.
Чтобы просмотреть только запущенные контейнеры, выполните команду:
lxc list | grep -i running
Аналогично для остановленных контейнеров выполните:
lxc list | grep -i stopped
Вы можете запросить информацию и показатели контейнера, такие как запущенные процессы, использование ЦП и памяти, а также пропускную способность, используя команду:
lxc info tec-container1
Шаг 9. Получите доступ оболочки к контейнеру LXC
Вы можете получить доступ bash к контейнеру, используя синтаксис:
lxc exec container-name name-of-the-shell
Чтобы получить доступ к оболочке tec-container1, мы выполним команду:
lxc exec tec-container1 bash
Получив доступ к оболочке, вы можете начать взаимодействовать с контейнером как пользователь root, выполняя общие команды оболочки, включая обновление системы, как показано:
apt update
Для выхода из контейнера выполните команду:
exit
Альтернативно вы можете выполнять команды непосредственно в контейнере без доступа к оболочке, используя следующий формат:
lxc exec container-name command
Например, вы можете запустить следующие команды, которые обновят списки пакетов, проверят версию ОС, работающую в контейнере Debian, и проверят дату.
lxc exec tec-container1 apt update
lxc exec tec-container1 cat /etc/debian_version
lxc exec tec-container1 date
Шаг 10. Извлеките/отправьте файл(ы) в контейнер LXC
Другая операция, которую вы можете выполнить, — это передача файлов в контейнер и из контейнера. Чтобы продемонстрировать это, мы создадим новый каталог в контейнере LXD и перейдем в него.
mkdir data && cd data
Далее мы создадим образец файла и добавим некоторые данные. Для этого мы создадим образец файла с помощью редактора vim.
vim file1.txt
Далее мы напечатаем образец текста и сохраним файл.
Hello World, Welcome to LXD containers.
Чтобы перетащить файл из контейнера в локальную хост-систему, мы будем использовать синтаксис:
lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}
В этом случае команда будет такой:
lxc file pull tec-container2/root/data/file1.txt /home/tecmint
Чтобы отправить или скопировать файл из локального каталога в контейнер, используйте синтаксис:
lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/
В этом случае у нас есть образец файла в домашнем каталоге с именем file2.txt, который копируется по пути /root/data/ в tec-container2<. контейнер.
lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Чтобы подтвердить существование файла в контейнере, запустим:
lxc exec tec-container2 ls /root/data
Шаг 11. Остановите/запустите/перезапустите и удалите контейнеры LXC.
С помощью утилиты командной строки lxc вы можете выполнять задачи управления контейнерами, такие как остановка, запуск, перезапуск и удаление контейнеров.
Чтобы остановить контейнер lxc, используйте синтаксис:
lxc stop container-name
Например, чтобы остановить tec-container1, мы выполним команду:
lxc stop tec-container1
Чтобы запустить контейнер lxc, используйте синтаксис:
lxc start container-name
Например, чтобы запустить tec-container1, мы выполним:
lxc start tec-container1
Чтобы перезапустить оба контейнера lxc, мы выполним команду:
lxc restart tec-container1
lxc restart tec-container2
Чтобы удалить контейнер lxc, необходимо сначала остановить контейнер, а затем удалить его. Например, для удаления выполним команды:
lxc stop tec-container1
lxc delete tec-container1
Альтернативно вы можете объединить эти две команды, как показано.
lxc stop tec-container1 && lxc delete tec-container1
Шаг 12. Получите справку по параметрам командной строки LXC
Чтобы получить справку по другим параметрам команды, предоставляемым LXC, просто запустите команду:
lxc --help
OR
lxc command --help e.g
lxc file --help
Заключение
Это было глубокое погружение в контейнеры LXD и способы их создания и управления ими с помощью утилиты командной строки lxc. Мы надеемся, что это руководство оказалось для вас полезным.