====== Технология 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