|
|||||||
Создание и использование LXC контейнера в Astra Linux SE
Время создания: 19.07.2024 09:19
Автор: Xintrea
Текстовые метки: astra, linux, контейнер, LXC, создание, настройка, установка, развертывание
Раздел: Компьютер - Linux - Дистрибутив Astra Linux
Запись: xintrea/mytetra_syncro/master/base/1721369963fw3iqtdnet/text.html на raw.github.com
|
|||||||
|
|||||||
В этой заметке описывается установка LXC-контейнера с Astra Linux 1.7 внутри основной системы с Astra Linux 1.6. Да, в Astra 1.6 можно запустить контейнер со всеми библиотеками от Astra 1.7. Все проверено, все работает. Развёртывание контейнера с Astra Linux SE 1. В основной системе надо установить пакеты lxc и lxc-astra. 2. Далее необходимо настроить сеть под контейнеры. Для этого: Создать файл /etc/default/lxc-net со следующим содержимым: USE_LXC_BRIDGE="true" LXC_BRIDGE="lxcbr0" 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="" Как видно из этих настроек, для сети будет использоваться соединение типа "мост". Обычно, такое же соединение используется и при обычной виртуализации, например в VirtualBox. По сути, эти настройки создают в системе виртуальный маршрутизатор. Маршрутизатору указывается его IP-адрес, маска сети, обслуживаемый сетевой диапазон (не совсем понятно почему, ибо маска и диапазон содержат одни и те же сведения), задаются параметры DHCP-сервера. Затем, в файле /etc/lxc/default.conf строчку: lxc.net.0.type = empty необходимо заменить на: lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.flags = up Здесь надо обратить внимание, что имя линка lxcbr0 совпадает с именем, заданным ранее в параметре LXC_BRIDGE. После всех настроек следует перезапустить службу lxc-net: sudo systemctl restart lxc-net После этого действия должно появиться новое сетевое подключение lxcbr0. Его можно увидеть командой ip addr. 3. Подменить содержимое /etc/apt/sources.list на конфиг, необходимый для целевой системы контейнера. Другими словами, надо взять sources.list от гостя, и временно поместить содержимое этого файла в /etc/apt/sources.list основной (хостовой) системы. Это необходимо сделать из-за того, что в момент инсталляции скрипт будет копировать /etc/apt/sources.list хостовой системы в создаваемый каталог образа гостя. Предполагается, что все репозитарии, прописанные в sources.list, доступны по сети для хостовой машины. А из-за того, что был настроен мост, эти репозитарии будут доступны и для команд, запускаемых внутри гостевой системы. 4. Создать контейнер следующей командой: sudo lxc-create -t astralinux-se -n <название_контейнера> Название контейнера будет использоваться далее при его старте и остановке. В параметре -t указан скрипт astralinux-se. Этот скрипт подготовлен разработчиками Astra Linux, и устанавливается вместе с пакетом lxc-astra. Благодаря ему, без проблем развертывается Astra Linux 1.7 в Astra Linux 1.6 (и другие комбинации дистрибутивов семейства Astra). 5. Вернуть обратно содержимое файла /etc/apt/sources.list хоста. Использование 1. Для доступа к графике хоста из гостевой системы: На хосте добавить в файл /var/lib/lxc/<название_контейнера>/config следующие строки: lxc.mount.entry = tmpfs tmp tmpfs defaults lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir,ro На хосте добавить пользователя (какого?) в группу video. Разрешить подключение к X-серверу хоста с гостевых систем (да и вообще с других хостов). Для этого перед командой запуска контейнера необходимо выполнить команду: sudo xhost +local:root 2. Посмотреть список существующих контейнеров: sudo lxc-ls 3. Запуск контейнера: sudo lxc-start -n <имя_контейнера> 4. Проверка статусов контейнеров: sudo lxc-ls -f 5. Вход в терминал контейнера (что пароль по умолчанию — astralinux): ssh admin@<адрес_контейнера> 6. Установка средств разработки (пример): sudo apt-get install gcc g++ gdb qt5-default qttools5-dev qt5-style-plugins qtmultimedia5-dev qtbase5-private-dev qtcreator 7. Запуск приложений контейнера удаленно, без консольного входа по ssh, одной командой: ssh admin@<адрес_контейнера> "DISPLAY=:0 nohup <команда>" 8. Остановка контейнера: sudo lxc-stop -n <имя_контейнера> 9. Уничтожение контейнера: sudo lxc-destroy -n <имя_контейнера> |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|