Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
с установленными оперативными обновлениями (версия пакета lxc-astra не ниже 1.0.0+ci10)Astra Linux Special Edition РУСБ.10015-16 исп. 1
с установленными оперативными обновлениями (версия пакета lxc-astra не ниже 1.0.0+ci10)- Astra Linux Common Edition 2.12.33 (версия пакета lxc-astra не ниже 1.0.0+ci10)
Общая информация
LXC — это система контейнерной изоляции на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы на одном узле.
- LXC не использует виртуальные машины, а создаёт виртуальное окружение с собственным пространством процессов и сетевым стеком;
- Все экземпляры LXC используют один экземпляр ядра операционной системы;
- LXC основана на технологии cgroups, входящей в ядро ОС;
Известная проблема доступа к ядру ОС, когда root-пользователь LXC-контейнера может выполнить произвольный код в родительской операционной системе (за счёт того, что uid 0 внутри контейнера совпадает с uid 0 базовой системы) решена введением (в версиях LXC начиная с 1.0) «непривилегированных контейнеров», где uid 0 в контейнере соответствует непривилегированному пользователю снаружи, и имеет расширенные права только на свои ресурсы.
Механизм cgroups (control group) — механизм ядра ОС, который ограничивает и изолирует вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода) для групп процессов.
Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами, и обеспечивает программное управление ими.
Механизм cgroups предоставляет единый программный интерфейс к целому спектру средств управления процессами,
начиная с контроля единичного процесса (таких как, например, утилита nice),
и вплоть до полной виртуализации на уровне системы LXC.
Механизм cgroups предоставляет следующие возможности:
ограничение ресурсов (resource limiting): использование памяти, в том числе виртуальной;
приоритизацию: разным группам можно выделить разное количество процессорного ресурса и пропускной способности подсистемы ввода-вывода;
учёт: подсчёт затрат тех либо иных ресурсов группой;
изоляцию: разделение пространств имён для групп таким образом, что одной группе недоступны процессы, сетевые соединения и файлы другой;
управление: приостановку (freezing) групп, создание контрольных точек (checkpointing) и их перезагрузку.
Работа с LXC-контейнерами в ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
Использование механизмов LXC в Astra Linux Special Edition возможно только на нулевом уровне конфиденциальности
Установка пакетов
Установить комплект пакетов для запуска контейнеров LXC можно с помощью графического менеджера пакетов или из командной строки командами:
Для установки следует использовать пакет lxc-astra версии не ниже 1.0.0.
Настройка сети под LXC-контейнеры
Создать файл /etc/default/lxc-net со следующим содержимым:
USE_LXC_BRIDGE="true" LXC_BRIDGE="lxcbr0"sudo lxc-create -t astralinux-se -n container-se LXC_ADDR="10.0.3.1" LXC_NETMASK="255.255.255.0" LXC_NETWORK="10.0.3.0/24" LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" LXC_DHCP_MAX="253" LXC_DHCP_CONFILE="" LXC_DOMAIN=""
В файле /etc/lxc/default.conf строчку
lxc.net.0.type = empty
заменить на текст:
lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.flags = up
Перезапустить службу lxc-net:
sudo systemctl restart lxc-netСоздать контейнер:
Так как в качестве ядра контейнера используется ядро хост-машины, на хост-машине с Astra Linux Special Edition обязательно нужно использовать шаблон astralinux-se, а для Astra Linux Common Edition – шаблон astralinux-ce.
Следует также помнить, что в качестве источника пакетов используются репозитории хост-машины, указанные в файле /etc/apt/sources.list.#для Astra Linux Specail Edition:sudo lxc-create -t astralinux-se -n container-se
sudo lxc-create -t astralinux-se -n container-se
#или для Astra Linux Common Edition:
sudo lxc-create -t astralinux-ce -n container-ceДля контейнера использовано имя container-1, в командах управления контейнерами имя контейнера задаётся опцией -n;
Запустить созданный контейнер (на примере контейнера container-ce):
sudo lxc-start -n container-ceДождаться, когда в контейнере заработает сетевой интерфейс, т.е. когда команда:
sudo lxc-info -n container-ce -iHстанет выдавать IP-адрес конейнера.Войти в контейнер, используя полученный адрес (пароль пользователя, устанавливаемый по умолчанию - astralinux):
ssh -l admin `sudo lxc-info -n container-ce -iH`
Типовые операции с LXC-контейнерами
Запуск:
sudo lxc-start -n <имя_контейнера>Остановка:
sudo lxc-stop -n <имя_контейнера>Просмотр всех контейнеров:
sudo lxc-ls -fСетевой вход в контейнер:
ssh -l admin 10.10.10.100(возможна задержка примерно в минуту, в течение которой ssh-сервер стартует внутри контейнера). Пароль по умолчанию — astralinux
важно: после первого логина нужно сменить пароль для пользователя admin на более надёжный командой passwd;Удаление контейнера:
sudo lxc-destroy -n <имя_контейнера>Также, в случае использования контейнера в Astra Linux Common Edition для входа можно использовать консоль:
sudo lxc-console -n <имя_контейнера>Внутри контейнера, при правильно настроенной сети, можно устанавливать и настраивать программы так же, как и на обычном компьютере.