====== Технология LXC ======
* [[http://ru.wikipedia.org/wiki/LXC|LXC wiki]]
* [[https://wiki.debian.org/LXC|debian.org/LXC]]
* [[https://linuxcontainers.org/lxc/getting-started/|LXC Getting started]]
===== Debian/Ubuntu =====
===== Подготовка родительской (host) системы =====
==== Подготовка сети ====
==== Настройка bridge ====
root@server:~# apt install bridge-utils
root@server:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet static
# address 192.168.X.10
# netmask 255.255.255.0
# gateway 192.168.X.1
auto br0
iface br0 inet static
address 192.168.X.10
netmask 255.255.255.0
gateway 192.168.X.1
bridge_ports eth0
# bridge_stp off
# bridge_maxwait 0
# post-up /sbin/brctl setfd br0 0
* !!! понадобиться включить «**неразборчивый режим**» в адаптере
root@server:~# init 0
==== Установка и настройка lxc ====
root@server:~# apt install lxc
root@server:~# cat /etc/default/lxc
...
#[ ! -f /etc/default/lxc-net ] || . /etc/default/lxc-net
ИЛИ
root@server:~# cat /etc/default/lxc-net
...
USE_LXC_BRIDGE="false"
...
===== Подготовка дочерней (гостевой) системы =====
==== Создание ветки дочерней системы ====
=== Debian ===
debian# lxc-create -t debian -n www
== С использованием LVM ==
* [[Управление файловыми системами в Linux#Создание и использование новой логической группы томов]] LVM
debian# ###lxc-create -t debian -n www -B lvm --vgname=vg1 --fssize=4G --fstype=ext4
debian# ###mount /dev/vg1/www /var/lib/lxc/www/rootfs/
=== Ubuntu ===
ubuntu# lxc-create -t download -n www -- -d ubuntu -r focal -a amd64
ubuntu24# time lxc-create -t ubuntu -n www
15 минут
==== Установка ПО в дочерней системе ====
root@server:~# cp /etc/ssh/sshd_config /var/lib/lxc/www/rootfs/etc/ssh/sshd_config
root@server:~# ###cp /etc/resolv.conf /var/lib/lxc/www/rootfs/etc/resolv.conf
root@server:~# chroot /var/lib/lxc/www/rootfs /bin/bash
root@server:/# PS1='www:\w# '
www:/# apt purge isc-dhcp-client
www:/# apt install nano vim iputils-ping
==== Настойка сетевых параметров дочерней системы ====
www:/# cat /etc/hosts
127.0.0.1 localhost
192.168.X.20 www.corpX.un www
==== Управление учетными записями в дочерней системе ====
www:/# passwd
... 123
www:/# exit
debian# ###umount /dev/vg1/www
* Проверить наличие пользователей/групп/домашних каталогов в контейнере и произвести соответственное [[Управление учетными записями в Linux#Перемещение учетных записей]]
===== Настройка lxc для запуска дочерней системы в контейнере =====
root@server:~# cat /var/lib/lxc/www/config
...
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 192.168.X.20/24
lxc.net.0.ipv4.gateway = 192.168.X.1
#lxc.start.auto = 1 # now - systemctl enable lxc@www
lxc.cgroup2.cpuset.cpus = 0-0
lxc.cgroup2.cpu.max = 10000 100000 #/sys/fs/cgroup/lxc.payload.www/cpu.max
lxc.cgroup2.memory.max = 512M
lxc.cgroup2.memory.high = 512M #/sys/fs/cgroup/lxc.payload.www/memory.high
root@server:~# lxc-ls -f
===== Запуск/мониторинг/остановка контейнера =====
root@server:~# lxc-start -n www
root@server:~# lxc-info -n www
root@server:~# lxc-attach -n www -- ps ax
или
root@server:~# ps -eo pid,cmd,lxc | grep www
root@server:~# lxc-attach -n www -- /bin/bash
root@server:~# ssh 192.168.X.20
root@server:~# lxc-stop -n www
root@server:~# systemctl start lxc@www
root@server:~# systemctl stop lxc@www
root@server:~# systemctl enable lxc@www --now