Incus¶
В этой статье
- Incus. Основные возможности
- Особенности сборки
- Начало работы после развертывания Incus
- Первоначальная настройка инфраструктуры
- Создание и управление контейнерами
- Управление конфигурацией контейнеров
- Работа со снимками и миграция
- Управление образами
- Сетевое взаимодействие
- Управление хранилищем
- Настройка NAT и маршрутизации
- Заказ Incus с помощью API
Информация
Incus - это менеджер системных контейнеров и виртуальных машин с открытым исходным кодом. Он представляет собой форк LXD и предоставляет простой и мощный инструмент для управления контейнерами Linux и виртуальными машинами на единой платформе.
Incus. Основные возможности¶
- Управление контейнерами и ВМ: Incus позволяет запускать системные контейнеры Linux и полноценные виртуальные машины на базе QEMU/KVM через единый интерфейс.
- Изоляция процессов: контейнеры работают в изолированном окружении с собственной файловой системой, сетевыми интерфейсами и процессами.
- Сетевые возможности: встроенная поддержка различных типов сетей - мосты, NAT, VLAN, overlay-сети для контейнеров.
- Управление хранилищем: гибкая система storage pools с поддержкой различных бэкендов - dir, btrfs, ZFS, LVM.
- Снимки и миграция: создание снимков состояния контейнеров, live-миграция между хостами без остановки сервисов.
- Профили конфигурации: переиспользуемые профили для быстрого развертывания контейнеров с заданными параметрами.
- Ограничение ресурсов: точный контроль CPU, памяти, дискового I/O и сетевой пропускной способности для каждого контейнера.
- REST API: полнофункциональный HTTP API для автоматизации и интеграции с внешними системами.
- Веб-интерфейс: встроенная веб-панель управления для визуального контроля над инфраструктурой.
- Библиотека образов: доступ к обширной коллекции готовых образов различных Linux-дистрибутивов.
- Кластеризация: возможность объединения нескольких хостов в единый кластер для распределенного управления.
Особенности сборки¶
| ID |
|---|
Основные пути и файлы Incus:
- Файл основных настроек:
/etc/default/incus - Директория данных:
/var/lib/incus - Пулы хранения:
/var/lib/incus/storage-pools/ - Контейнеры:
/var/lib/incus/containers/ - Образы:
/var/lib/incus/images/ - Файл логов:
/var/log/incus/incusd.log - Системные сервисы:
/usr/lib/systemd/system/incus*.service - Конфигурация sysctl:
/etc/sysctl.d/50-incus.conf - Конфигурация пользователя:
/root/.config/incus/
Примечание
Если не указано иное, по умолчанию мы устанавливаем последнюю релиз версию программного обеспечения с сайта разработчика или репозиториев операционной системы.
Начало работы после развертывания Incus¶
После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и API — Invapi.
Данные для авторизации, которые можно найти или во вкладке Информация >> Тэги панели управления сервером или в присланном e-mail:
- Ссылка для доступа к веб-интерфейсу Incus: в теге webpanel (порт 8443, HTTPS)
Важно
Для доступа к веб-интерфейсу необходимо использовать HTTPS и принять самоподписанный сертификат в браузере.
При первом обращении к веб-интерфейсу Incus браузер предупредит о незащищенном соединении из-за самоподписанного сертификата. Необходимо принять сертификат для продолжения работы:

После принятия сертификата откроется страница входа в систему. Нажмите кнопку Login with TLS для начала процесса аутентификации:

Система перенаправит на страницу добавления существующего сертификата:

Выберите вкладку Trust token и следуйте инструкциям:
-
В терминале сервера выполните команду для генерации токена:
-
Система сгенерирует токен, который необходимо скопировать:

-
Вставьте полученный токен в соответствующее текстовое поле на странице аутентификации и нажмите
Import.
После успешной аутентификации откроется главная страница веб-интерфейса со списком экземпляров.
Создание нового контейнера через веб-интерфейс¶
Для создания нового контейнера нажмите кнопку Create instance в правом верхнем углу интерфейса:

Откроется форма создания экземпляра с несколькими разделами конфигурации. Для выбора базового образа нажмите кнопку Browse images. Откроется окно выбора образа с фильтрами по дистрибутиву, релизу, варианту, архитектуре и типу:

Доступны следующие разделы конфигурации:
- Main configuration — основные параметры контейнера: имя, описание, тип экземпляра (контейнер или виртуальная машина), базовый образ и назначенные профили;
- Devices — управление устройствами контейнера:
- Disk — настройка дисковых устройств и точек монтирования;
- Network — конфигурация сетевых интерфейсов;
- GPU — подключение графических ускорителей;
- Proxy — настройка проброса портов между хостом и контейнером;
- Other — дополнительные типы устройств;
- Resource limits — ограничение ресурсов: процессор (CPU), оперативная память (RAM), дисковые операции ввода-вывода;
- Security policies — политики безопасности: настройка изоляции, привилегий и профилей безопасности (AppArmor, SELinux);
- Snapshots — управление снимками состояния контейнера для резервного копирования и восстановления;
- Migration — параметры миграции контейнера между хостами;
- Boot — настройки загрузки: порядок загрузочных устройств, автозапуск при старте системы;
- Cloud init — конфигурация автоматической инициализации контейнера через cloud-init (пользователи, сеть, пакеты, скрипты).
Выберите нужный образ, нажав кнопку Select напротив него:

После выбора образа заполните основные параметры:

- Instance name — имя контейнера;
- Description — описание (необязательно);
- Instance type — тип экземпляра (Container или Virtual Machine);
- Profiles — профили конфигурации.
Для запуска контейнера сразу после создания нажмите Create and start. Для создания без запуска используйте кнопку Create.
Мониторинг состояния контейнеров¶
Во время развертывания контейнера отображается прогресс загрузки образа. Статус "Setting up" с индикацией процесса загрузки показывает текущий прогресс создания экземпляра. После завершения установки статус изменится на "Running" с зеленым индикатором:

Управление сервисом¶
Проверка статуса:
Перезапуск сервиса:
Остановка сервиса:
Запуск сервиса:
Просмотр логов:
Первоначальная настройка инфраструктуры¶
После развертывания сервера рекомендуется выполнить первоначальную настройку инфраструктуры Incus.
Создание пула хранения¶
Пул хранения определяет, где будут храниться данные контейнеров:
Проверка созданных пулов хранения:
Для просмотра подробной информации о пуле:
Настройка сети¶
Создание NAT-моста для контейнеров с автоматической IPv4-адресацией:
Проверка сетевых настроек:
Просмотр конфигурации сети:
Настройка профиля по умолчанию¶
Профиль default определяет базовую конфигурацию для новых контейнеров. Добавление root-диска в профиль:
Добавление сетевого интерфейса в профиль:
Проверка конфигурации профиля:
Создание и управление контейнерами¶
Создание контейнера¶
Пример создания контейнера Debian 12 с ограничением ресурсов:
Параметры команды: - images:debian/12 - образ из публичного репозитория - deb12 - имя контейнера - --profile default - использование профиля по умолчанию - -c limits.cpu=2 - ограничение на 2 ядра CPU - -c limits.memory=2GiB - ограничение памяти 2 ГБ
Просмотр контейнеров¶
Список всех инстансов:
Вывод будет содержать информацию о состоянии, IP-адресах и типе каждого контейнера.
Управление состоянием контейнеров¶
Запуск контейнера:
Остановка контейнера:
Перезапуск контейнера:
Удаление контейнера (требуется остановка):
Принудительное удаление работающего контейнера:
Доступ к контейнеру¶
Подключение через bash:
Подключение к консоли TTY:
Для выхода из консоли используйте комбинацию клавиш Ctrl+a q.
Проброс портов¶
Для доступа к сервисам внутри контейнера из внешней сети используется механизм проброса портов через proxy-устройство:
Эта команда пробрасывает порт 8080 хоста на порт 80 контейнера.
Пример для нескольких портов:
HTTP:
HTTPS:
SSH:
Управление конфигурацией контейнеров¶
Просмотр конфигурации¶
Просмотр полной развернутой конфигурации контейнера:
Просмотр базовой конфигурации без профилей:
Изменение параметров¶
Установка параметров конфигурации:
Ограничение CPU:
Ограничение памяти:
Ограничение дискового I/O:
Автозапуск контейнера:
Добавление устройств¶
Общий синтаксис добавления устройств:
Примеры:
Добавление дополнительного диска:
Добавление дополнительного сетевого интерфейса:
Монтирование директории хоста в контейнер:
Удаление устройства:
Работа со снимками и миграция¶
Создание снимков¶
Снимки позволяют сохранить состояние контейнера для последующего восстановления:
Пример:
Список снимков контейнера:
Восстановление из снимка¶
Пример:
Удаление снимка:
Переименование и копирование¶
Переименование контейнера:
Копирование контейнера на том же хосте:
Копирование контейнера на другой Incus-хост:
Для работы с удаленными хостами необходимо предварительно добавить remote:
Управление образами¶
Просмотр образов¶
Список локальных образов:
Список образов в удаленном репозитории:
Поиск конкретного дистрибутива:
Копирование образов¶
Копирование образа из публичного репозитория с автообновлением:
Копирование образа с алиасом:
Создание образа из контейнера¶
Удаление образов¶
или по алиасу:
Сетевое взаимодействие¶
Управление сетями¶
Список сетей:
Просмотр конфигурации сети:
Создание новой сети:
# Создание bridge-сети
incus network create mybr0 \
ipv4.address=10.10.10.1/24 \
ipv4.nat=true \
ipv6.address=none
# Создание macvlan-сети
incus network create mymacvlan \
type=macvlan \
parent=eth0
Редактирование сети:
Удаление сети:
Сетевые forwarding правила¶
Создание forwarding правила для проброса портов:
Управление хранилищем¶
Управление пулами хранения¶
Список пулов:
Просмотр информации о пуле:
Создание пула хранения:
Dir-based пул:
Btrfs пул:
ZFS пул:
Редактирование пула:
Удаление пула:
Управление томами¶
Создание пользовательского тома:
Список томов в пуле:
Подключение тома к контейнеру:
incus config device add <container> <device-name> disk \
pool=<pool-name> \
source=<volume-name> \
path=/mount/path
Копирование тома:
Удаление тома:
Настройка NAT и маршрутизации¶
В некоторых случаях может потребоваться ручная настройка NAT и правил маршрутизации для обеспечения сетевого доступа контейнеров к внешней сети.
Переключение на nftables¶
Включение IP forwarding¶
Для постоянного применения добавьте в /etc/sysctl.conf:
Перезапуск Incus после изменений:
Настройка NAT таблицы¶
Создание NAT таблицы и цепочки POSTROUTING:
Добавление правила masquerade для подсети контейнеров:
Примечание
Замените ens1 на имя вашего внешнего сетевого интерфейса и 10.1.4.0/24 на подсеть вашего моста Incus.
Настройка FORWARD цепочки¶
Создание filter таблицы и цепочки FORWARD:
Добавление правил для пропуска трафика:
Разрешить трафик из контейнеров наружу:
Разрешить established/related трафик обратно:
nft insert rule ip filter FORWARD iifname "ens1" oifname "incusbr0" ct state established,related accept
Проверка правил nftables¶
Просмотр всех правил:
Сохранение правил (для Debian/Ubuntu):
Установка пакета для сохранения правил:
Сохранение текущих правил:
Включение автозагрузки:
Примечание
Подробная информация по всем возможностям Incus содержится в официальной документации разработчиков.
Заказ Incus с помощью API¶
Для установки данного ПО с использованием API следуйте этой инструкции.