Встречайте, новый дистрибутив для установки в контейнере Calculate Linux Container!

containers.png


Внимание! Актуальная версия руководства по установке Calculate в LXC Container доступна в Wiki »


Calculate Linux пополнился ещё одним дистрибутивом Calculate Linux Container (CLC), собранным специально для установки в контейнере LXC/LXD.

Прежде чем приступить к установке, выполните обновление пакетов:

cl-update

Ниже представлен пример поднятия контейнера LXC на примере настройки OpenRC с работающим DHCP сервером в локальной сети.

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

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

emerge app-emulation/lxc

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

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

lxc-create -n calculate -t download -- --server mirror.calculate-linux.org --no-validate

Где:

  • -n - имя, которое вы присвоите контейнеру
  • -t - сценарий инициализации
  • --server - зеркало (список доступных зеркал)
  • --no-validate - не проверять gpg подпись

Сценарий загрузки отобразит доступные образы и попросит указать дистрибутив “CLC” (большими буквами), релиз и архитектуру.

Программа сама загрузит контейнер с зеркала и выполнит его установку. Установленные контейнеры находятся в директории /var/calculate/lxc.

Настройка сети

Для настройки сети в контейнере LXC понадобится настроить сетевой мост. Пример настройки OpenRC в файле /etc/conf.d/net:

config_eth0="null"
bridge_br0="eth0"
config_br0="dhcp"
bridge_forward_delay_br0=0
bridge_hello_time_br0=1000
bridge_stp_state_br0=0

Понадобится так же удалить символическую ссылку /etc/init.d/net.eth0 и создать /etc/init.d/net.br0:

/etc/init.d/net.eth0 stop
rm -f /etc/init.d/net.eth0
ln -s /etc/init.d/net.lo /etc/init.d/net.br0
/etc/init.d/net.br0 start

Далее выполните настройки сети установленного контейнера в файле /var/calculate/lxc/calculate/config:

 # тип сети, veth если используется bridge
lxc.network.type = veth
 # поднимать сетевой интерфейс при запуске системы
lxc.network.flags = up
 # интерфейс внутри контейнера
lxc.network.name = eth0
 # мост, через который будет работать виртуальный интерфейс
lxc.network.link = br0
 # имя сетевого адаптера для этого контейнера на хостовой машине
lxc.network.veth.pair = veth-calculate
 # произвольный MAC адрес сетевого интерфейса контейнера (первое число должно быть чётным)
lxc.network.hwaddr = 02:03:04:05:06:07

Запуск контейнера

Запустить контейнер вы можете командой:

lxc-start -n calculate

Зайти в консоль контейнера:

lxc-attach -n calculate

После этого в контейнере можно поднять сеть:

/etc/init.d/net.eth0 start
rc-update add net.eth0 default

Выйти можно набрав ‘exit’ или Ctrl+d.

Добавление запуска контейнера в автозагрузку:

ln -sf /etc/init.d/lxc /etc/init.d/lxc.calculate
rc-update add lxc.calculate default

Монтирование ресурсов в контейнер

Обратите внимание, что путь в системе контейнера должен существовать.

Для монтирования /home отредактируйте файл настройки контейнера /var/calculate/lxc/calculate/config добавив строчку:

lxc.mount.entry = /home home none rw,bind 0.0

А теперь объясните зачем это надо

Было бы неплохо, чтобы вы и с OpenStack`ом подружились… Всё же OpenStack на кальке с калькой внутри - это нереально круто было бы))

Денис Цыцарский писал(а):

А теперь объясните зачем это надо

Несколько примеров:

# У вас есть старый проект, который зависит от системных библиотек, из-за чего вы опасаетесь обновлять сервер. Такому проекту самое место в контейнере.
# Вы используете WordPress/Joomla/Drupal в которых часто находят уязвимости, кроме того на сервере хранятся важные файлы. Веб-сайтам самое место в контейнере.
# В небольшой компании вы хотите организовать сеть из десктопов и сервера (CLD+CDS) для совместного доступа к файлам, поднятием сервисов и т.д., но денег на сервер нет. Почему бы не поднять сервер в контейнере одной из машин. В отличие от полноценной системы запущенной virtualbox/xen накладные расходы, занимаемая память будут минимальны, плюс впоследствии его всегда можно будет перенести на другое железо.
# Чтобы сделать сервер безопасным и зашифровать не только данные, но и саму систему, нужно вынести за пределы ПК ключ (или пароль), в идеале получать его по сети. Для этого нужна система, которая может загрузиться и поднять сеть. Для этой цели можно использовать CSS который получив ключ подмонтирует зашифрованный раздел с контейнером и данными.
# Вы просто хотите поэкспериментировать с настройками сервера. Намного быстрей развернуть образ CLC в контейнере, чем устанавливать CSS в Virtualbox. Если эксперимент удастся, вы всегда можете перенести настроенную в контейнере систему на сервер.

А можно данный контейнер прикрутить к proxmox

Тимофей Захарчук писал(а):

А можно данный контейнер прикрутить к proxmox

cd /var/calculate/lxc/your_lxc_name/rootfs/
echo ‘Gentoo Base System release 2.4.1’ > etc/gentoo-release
tar zcvf …/…/calculate-linux-template.tar.gz . && cd

получится шаблон для Proxmox

Автоматическая перепаковка для proxmox
Итоговый файл положить например в /var/lib/vz/template/cache и тогда можно будет создавать контейнейр из веб интерфейса.

calculate.sh

#!/bin/bash

if [ ! -f "calculate.tar.xz" ]; then
    wget -O calculate.tar.xz https://mirror.calculate-linux.org/container/ccs-20180515-x86_64/rootfs.tar.xz
fi
mkdir rootfs
tar xf calculate.tar.xz -C rootfs/
cd rootfs
mv etc/gentoo-release etc/gentoo-release-calculate
echo 'Gentoo Base System release 2.4.1' > etc/gentoo-release
tar -zcf ./../calulate-linux-ccs-20180515-amd64-template.tar.gz .
cd ..
rm -rf rootfs