Работа с Linux Container LXC в Debian9
LXC - система контейнерной виртуализации Linux. Позволяет быстро создать виртуальную среду не прибегая к использованию гипервизоров и развертыванию виртуальной машины. LXC создает гостевую ОС внутри хостовой ОС, используя рабочее ядро и отдельную файловую систему.
Установка LXC в Debian9:
Установщиком будут предложены дополнительные пакеты:
После установки LXC готов к работе.
Для того, чтобы создать контейнер по шаблону "debian" с именем container-1:
Посмотреть список доступных шаблонов:
На данный момент доступны шаблоны:
Просмотр списка созданных контейнеров с дополнительной информацией:
Стартовать контейнер:
Остановить контейнер:
Задать пароль в контейнере:
Войти в контейнер:
Настройка сети
Создаваемые контейнеры не имеют настроенных сетевых интерфейсов кроме lo.
Для настройки сети с виртуальным адаптером, необходимо произвести застройки в конфигурационном файле контейнера
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.veth.pair = veth-01
lxc.network.link = lxcbr0
Контейнер получит интерфейс eth0 с динамическим адресом, присвоенным встроенным DHCP виртуальной сетевой подсистемы (dnsmasq).
Копирование (клонирование) контейнера
После клонирования в конфигурационном файле контейнера следует заменить имя его интерфейса в хост-системе, напирмер на veth-02
Редирект порта 22 из контейнера с адресом 10.0.3.25 на хост-машину 8022 выполняется с помощью правила iptables:
Посмотреть созданные правила NAT:
Документация
https://linuxcontainers.org/ru/lxc/introduction/
LXC - система контейнерной виртуализации Linux. Позволяет быстро создать виртуальную среду не прибегая к использованию гипервизоров и развертыванию виртуальной машины. LXC создает гостевую ОС внутри хостовой ОС, используя рабочее ядро и отдельную файловую систему.
Установка LXC в Debian9:
apt-get install lxc
Установщиком будут предложены дополнительные пакеты:
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base liblxc1 libpam-cgfs lxc lxcfs python3-lxc rsync uidmap
После установки LXC готов к работе.
Для того, чтобы создать контейнер по шаблону "debian" с именем container-1:
lxc-create -t debian -n container-1
Посмотреть список доступных шаблонов:
ls /usr/share/lxc/templates/
На данный момент доступны шаблоны:
lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-slackware lxc-sshd lxc-ubuntu-cloud
lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-sparclinux lxc-ubuntu
lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-sparclinux lxc-ubuntu
Просмотр списка созданных контейнеров с дополнительной информацией:
lxc-ls -f
Вывести информации о контейнере:
lxc-info -n container-1
Стартовать контейнер:
lxc-start -n container-1
Остановить контейнер:
lxc-stop -n container-1
Задать пароль в контейнере:
lxc-attach -n container-1 passwd
Войти в контейнер:
lxc-attach -n container-1
Выйти:
exit
Подключиться консолью к контейнеру
lxc-console -n container-1
Настройка сети
Создаваемые контейнеры не имеют настроенных сетевых интерфейсов кроме lo.
Для настройки сети с виртуальным адаптером, необходимо произвести застройки в конфигурационном файле контейнера
/var/lib/lxc/container-2/config
В данный файл следует дописать настройки сети:lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.veth.pair = veth-01
lxc.network.link = lxcbr0
Контейнер получит интерфейс eth0 с динамическим адресом, присвоенным встроенным DHCP виртуальной сетевой подсистемы (dnsmasq).
Копирование (клонирование) контейнера
lxc-copy -n container-2 -N container-3
Команда lxc-copy заменяет команду lxc-clone После клонирования в конфигурационном файле контейнера следует заменить имя его интерфейса в хост-системе, напирмер на veth-02
Файл: /var/lib/lxc/container-3/config
lxc.network.veth.pair = veth-02
lxc.network.veth.pair = veth-02
Редирект порта 22 из контейнера с адресом 10.0.3.25 на хост-машину 8022 выполняется с помощью правила iptables:
iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 8022 -j DNAT --to 10.0.3.25:22
Посмотреть созданные правила NAT:
iptables -t nat -L
Документация
https://linuxcontainers.org/ru/lxc/introduction/