Компиляция LXC на Ubuntu

Данная инструкция полезна для обновления LXC на Ubuntu. По умолчанию в Ubuntu 18.04 стоит версия 3.0.3. Ее можно обновить до 4.0.4 согласно инструкции ниже.

Удалите верию LXC, если она была установлена:

aptitude purge lxc lxc-utils lxcfs liblxc-common
systemctl unmask lxcfs
systemctl unmask lxc-net
systemctl unmask lxc

Установите программы:

aptitude install uidmap checkinstall

Скачайте файл

wget https://github.com/lxc/lxc/archive/lxc-4.0.4.zip

Разархивируйте файл

unzip lxc-4.0.4.zip

Перейдите в папку

mv lxc-lxc-4.0.4 lxc-4.0.4
cd lxc-4.0.4

Сконфигурируйте проект

./autogen.sh

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

Запустите компиляцию

make

Создайте deb пакет

sudo checkinstall

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

dpkg -i lxc_4.0.4-1_amd64.deb

Создайте файл /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=/etc/lxc/dnsmasq.conf
#LXC_DOMAIN="lxc"

А также файл /etc/lxc/default.conf с содержимым:

lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
lxc.idmap = u 0 100000 65536
lxc.idmap = g 0 100000 65536

Сделайте UID и GID Mapping

nano /etc/subuid

lxc:100000:65536
lxd:100000:65536
root:100000:65536

nano /etc/subgid

lxc:100000:65536
lxd:100000:65536
root:100000:65536

Для удобства вы можете добавить пользователя lxc-root, чтобы в htop видеть процессы запущенные в lxc

groupadd -r --gid 100000 lxc-root
useradd -r -M --uid 100000 -g lxc-root lxc-root

Установите права доступа, чтобы корректно запускались контейнеры:

chown lxc-root:root /var/lib/lxc
chmod 755 /var/lib/lxc