Установка Calculate в LXC
Обновлено 13 июня 2023
Установка пакетов
Для работы с LXC-контейнерами вам понадобится установить пакет app-containers/lxc:
emerge -a app-containers/lxc
Установка системы в контейнер
Для установки Calculate Linux Container выполните:
Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs --- You just created a Calculate container (release=23, arch=amd64, variant=default) To enable sshd, run: rc-update add sshd For security reason, container images ship without user accounts and without a root password. Use lxc-attach or chroot directly into the rootfs to set a root password or create user accounts.
Вместо calculate укажите любое другое подходящее имя контейнера. Программа сама загрузит контейнер с зеркала и выполнит его установку. Установленные контейнеры находятся в директории /var/calculate/lxc/.
Заметка
В дальнейшем описании в командах и путях вместо calculate используйте выбранное вами имя контейнера.
Настройка сети
Настройка сети хост-машины
Для настройки сети в контейнере LXC понадобится настроить сетевой мост на хост-машине. Для этого выберите один из двух сценариев настройки:
- В случае наличия нескольких IP-адресов у хостовой машины, - например, если вы будете запускать контейнер на десктопе, работающем в локальной сети и получающим IP через DHCP - вы можете настроить сеть путём использования контейнерами общей сети.
- Если у хостовой машины выделен один IP-адрес, - например, при поднятии контейнера на VPS или выделенном сервере - вы можете настроить трансляцию сетевых адресов через один интерфейс.
Настройка сети контейнера
Выполните настройки сети установленного контейнера:
/var/calculate/lxc/calculate/config
# тип сети, veth если используется bridge lxc.net.0.type = veth # поднимать сетевой интерфейс при запуске системы lxc.net.0.flags = up # интерфейс внутри контейнера lxc.net.0.name = eth0 # мост, через который будет работать виртуальный интерфейс lxc.net.0.link = br0 # произвольный MAC адрес сетевого интерфейса контейнера (первое число должно быть чётным) lxc.net.0.hwaddr = 02:03:04:05:06:07
Измените MAC-адрес 02:03:04:05:06:07, учитывая, что первое число должно быть чётным (адреса с нечётым первым числом являются multicast и не могут быть назначены).
Запуск контейнера
Запустите контейнер, выполнив:
lxc-start calculate
Проверьте, что контейнер запущен:
Name: calculate State: RUNNING PID: 25107 CPU use: 3.03 seconds BlkIO use: 51.98 MiB Memory use: 61.21 MiB KMem use: 4.39 MiB Link: vethXLWII2 TX bytes: 516 bytes RX bytes: 516 bytes Total bytes: 1.01 KiB
Добавьте запуск контейнера в автозагрузку:
ln -sf /etc/init.d/lxc /etc/init.d/lxc.calculate
rc-update add lxc.calculate
Для того, чтобы система в контейнере корректно стартовала после поднятия сети, создайте файл со следующим правилом:
/etc/conf.d/lxc
rc_want="net.br0"
Настройка системы в контейнере
Подключитесь к контейнеру для выполнения дальнейших настроек.
lxc-attach calculate
Настройки в контейнере вы можете выполнять и из хостовой машины, используя конструкцию:
lxc-attach <имя_контейнера> -- <команда>
Сеть
Настройка сети при использовании общей сети
В случае использования общей сети (с IP-адресами локальной сети) вы можете настроить сеть с использованием DHCP или указав свободный IP-адрес и IP маршрутизатора.
При использовании DHCP сервера в локальной сети достаточно выполнить:
/etc/init.d/net.eth0 start
rc-update add net.eth0
Настройка сети при использовании трансляции сетевых адресов
При использовании трансляцией сетевых адресов в настройках хост-машины выполните следующие настройки сети:
cl-setup-network --iface eth0:192.168.11.2:24 --route default:192.168.11.1 --dns 8.8.8.8
rc-update add net.eth0
В примере контейнер использует IP 192.168.11.2 с маршрутом через 192.168.11.1.
Прочие настройки
Настройте локализацию и укажите пароль пользователя root:
cl-setup-locale -l ru_RU --timezone Europe/Moscow
passwd
Вы можете также указать полное сетевое имя машины:
cl-setup-network --hostname calculate.mydomain.org
Если вы хотите проверить изменения, выполните:
hostname -f
Установка дополнительных программ в контейнере
Выполните обновление Portage в контейнере:
cl-update
При первом запуске утилита скачает дерево Portage и подключённые оверлеи.
Для логирования и выполнения задач cron установите необходимые пакеты:
emerge -a app-admin/logrotate app-admin/syslog-ng sys-process/cronie
По завершению настроек выйдите из контейнера:
exit
Обновление до версии 4.0
Начиная с LXC 4.0 вместо отдельных конфигурационных файлов для различных типов контейнеров, используется единый файл настроек common.conf. При обновлении app-containers/lxc с предыдущих версий, необходимо внести изменения в настройки уже подготовленных контейнеров. Исправьте путь до общего конфигурационного файла:
/var/calculate/lxc/calculate/config
#lxc.include = /usr/share/lxc/config/gentoo.common.conf lxc.include = /usr/share/lxc/config/common.conf
Для работы программ, использующих путь /dev/shm (например PostgreSQL), добавьте в конфигурационный файл контейнера монтирование tmpfs по этому пути:
/var/calculate/lxc/calculate/config
lxc.mount.entry = none dev/shm tmpfs rw,nosuid,nodev,create=dir
Заключение
Контейнеры удобны своей изоляцией от основной системы. Вы можете экспериментировать с ними и даже запускать Calculate Linux из других систем!