Установка Calculate в LXC

Обновлено 13 июня 2023

LXC

Установка пакетов

Для работы с LXC-контейнерами вам понадобится установить пакет app-containers/lxc:

emerge -a app-containers/lxc

Установка системы в контейнер

Для установки Calculate Linux Container выполните:

lxc-create -n calculate -t download -- --server mirror.calculate-linux.org --arch x86_64 --dist scratch --release live
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

Проверьте, что контейнер запущен:

lxc-info 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 из других систем!