Контейнеры LXC

LXC (Linux Containers) - это технология виртуализации на уровне операционной системы, которая позволяет запускать несколько изолированных экземпляров Linux на одном узле (хосте) без необходимости в дополнительном ядре. LXC использует функции ядра Linux, такие как cgroups и namespaces, для обеспечения изоляции и управления ресурсами. Каждый контейнер работает в своем собственном пространстве имен и имеет отдельный доступ к ресурсам, таким как сеть, процессор и память.

Различия между LXC и OpenVZ и выбор между ними зависят от специфических потребностей и предпочтений. OpenVZ является еще одной системой виртуализации на уровне операционной системы, но с некоторыми отличиями от LXC:

  1. Ядро: OpenVZ требует специального ядра Linux для работы, в то время как LXC может работать на стандартном ядре Linux.
  2. Изоляция и безопасность: OpenVZ предлагает более глубокий уровень изоляции и часто считается более безопасным благодаря наличию модифицированного ядра. LXC, с другой стороны, постоянно развивается для улучшения безопасности, но его изоляция зависит от возможностей стандартного ядра Linux.
  3. Совместимость с ядром: Поскольку OpenVZ требует специального ядра, оно не всегда совместимо со всеми дистрибутивами Linux. LXC, будучи частью стандартного ядра Linux, поддерживается большинством современных дистрибутивов.

Выбор технологии:

  • Для общего использования и более широкой совместимости: LXC является более предпочтительным выбором, особенно если вы планируете использовать современные инструменты оркестрации контейнеров, Proxmox.
  • Для специализированных требований по безопасности и изоляции: OpenVZ может быть лучшим выбором, если требуется более строгая изоляция на уровне операционной системы.

Запустим контейнер LXC в Ubuntu 22.

apt install lxc lxc-templates

Настройка сети для LXC. LXC поддерживает различные типы сетевых конфигураций, но по умолчанию использует сеть моста. Вы можете настроить сеть в соответствии с вашими требованиями. DCHP сети для контейнеров прописаны в файле /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"

1. Создайте новый контейнер: Пример создания контейнера с Ubuntu:

sudo lxc-create -n <имя_контейнера> -t ubuntu

Замените <имя_контейнера> на желаемое имя для вашего контейнера.

2. Запустите контейнер:

sudo lxc-start -n <имя_контейнера>
  • Подключение к контейнеру:
sudo lxc-attach -n <имя_контейнера>
  • Остановка контейнера:
sudo lxc-stop -n <имя_контейнера>
  • Удаление контейнера:
sudo lxc-destroy -n <имя_контейнера>
  • Просмотр списка контейнеров:
sudo lxc-ls --fancy
  • Просмотр информации о конкретном контейнере:
lxc-info -n <имя_контейнера>
 
lxc-info  test1
Name:           test1
State:          RUNNING
PID:            29832
Link:           veth1sJuWF
 TX bytes:      3.28 KiB
 RX bytes:      1.69 KiB
 Total bytes:   4.97 KiB

Эти шаги предоставляют основные команды для работы с LXC. Обратите внимание, что в зависимости от вашей конфигурации и версии Linux некоторые шаги могут немного отличаться.

lxc-create -n test1 -t ubuntu
lxc-start -n test1
 
lxc-ls --fancy
NAME  STATE   AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
test1 RUNNING 0         -      -    -    false

Подключимся к контейнеру и настроим статическую сеть, выбрав ip из /etc/default/lxc-net

root@z:/etc/network# lxc-attach -n  test1
 
root@test1:/# vi /etc/netplan/10-lxc.yaml
PQ VPS сервера в 28+ странах.