Incus
Incus — это форк проекта LXD, который был создан после того, как компания Canonical (разработчик Ubuntu) объявила о прекращении активной разработки и поддержки LXD в версии 4.0. Incus — это современная, безопасная и мощная система управления контейнерами и менеджер виртуальных машин, предлагающая удобный и высокоуровневый интерфейс для работы с контейнерами, основанными на технологии LXC. Он поддерживает контейнеризацию, виртуализацию, настройки сетей и хранилищ, а также предоставляет REST API для автоматизации и интеграции. Incus стремится быть открытым и независимым от Canonical, сохраняя совместимость с LXD.
Содержание
Установка и настройка
- Установить эмулятор аппаратного обеспечения, агент для запуска виртуальных машин, саму службу — и навсегда запустить её:
# apt-get install -y qemu incus-agent incus # systemctl enable --now incus
- После установки создаcтся две группы:
incus— предоставляет базовый пользовательский доступ,incus-admin— обеспечивает полный контроль над Incus.
- Создать пользователя для управления Инкусом (например, testuser), предоставить ему полный контроль и переключиться на него:
# useradd testuser # usermod -aG incus-admin testuser # su - testuser
- Incus требует некоторой начальной настройки сети и хранилища.
- Это можно сделать в интерактивном режиме:
$ incus admin init- Или же базовая автоматизированная конфигурация:
$ incus admin init --minimal
Использование
Посмотреть образы ALT, доступные на images.linuxcontainers.org:
$ incus image ls images:alt
Примерный вывод:
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
|---|---|---|---|---|---|---|---|
| alt/Sisyphus (3 more) | 26db40afa943 | yes | Alt Sisyphus amd64 (20260129_01:17) | x86_64 | CONTAINER | 227.63MB | 2026/01/29 00:00 UTC |
| alt/Sisyphus (3 more) | 672fca4ceadc | yes | Alt Sisyphus amd64 (20260129_01:17) | x86_64 | VIRTUAL-MACHINE | 608.66MiB | 2026/01/29 00:00 UTC |
| alt/Sisyphus/arm64 (1 more) | af376703776a | yes | Alt Sisyphus arm64 (20260129_01:17) | aarch64 | CONTAINER | 175.79MiB | 2026/01/29 00:00 UTC |
| alt/Sisyphus/arm64 (1 more) | c39e050c6395 | yes | Alt Sisyphus arm64 (20260129_01:17) | aarch64 | VIRTUAL-MACHINE | 520.64MiB | 2026/01/29 00:00 UTC |
| alt/p11 (3 more) | c5010e97fb74 | yes | Alt p11 amd64 (20260129_01:17) | x86_64 | CONTAINER | 231.25MiB | 2026/01/29 00:00 UTC |
| alt/p11 (3 more) | 12089eeda800 | yes | Alt p11 amd64 (20260129_01:17) | x86_64 | VIRTUAL-MACHINE | 602.67MiB | 2026/01/29 00:00 UTC |
| alt/p11/arm64 (1 more) | 116787b8b109 | yes | Alt p11 arm64 (20260129_01:17) | aarch64 | CONTAINER | 176.59MiB | 2026/01/29 00:00 UTC |
| alt/p11/arm64 (1 more) | 731423970534 | yes | Alt p11 arm64 (20260129_01:17) | aarch64 | VIRTUAL-MACHINE | 516.55MiB | 2026/01/29 00:00 UTC |
Виртуальные машины
Запустить виртуальную машину с названием alt-vm из образа Alt Sisyphus типа "VIRTUAL-MACHINE":
$ incus launch images:alt/Sisyphus alt-vm --vm
Контейнеры
Запустить первый контейнер:
$ incus launch images:alt/p11 first
Запустить второй контейнер:
$ incus launch images:alt/Sisyphus second
Сделать третий контейнер из копии первого и запустить его:
$ incus copy first third
$ incus start third
Остановить первый контейнер и удалить его:
$ incus stop first
$ incus rm first
Зайти в контейнер:
$ incus exec first bash
Принудительно удалить запущенный контейнер:
$ incus rm second --force
Дополнительно
Вывести список образов:
$ incus image ls
Вывести список всех созданных контейнеров и виртуальных машин:
$ incus ls
Запросить информацию о каждом экземпляре:
$ incus info alt-vm
$ incus info first
$ incus info second
$ incus info third
Настройка экземпляров
Существует несколько ограничений и параметров конфигурации, которые вы можете установить для своих экземпляров. Все параметры экземпляров можно найти здесь.
- Запустить контейнер и ограничить его одним виртуальным процессором и 192 МБ оперативной памяти.
$ incus launch images:alt/p11 limited --config limits.cpu=1 --config limits.memory=192MiB
- Проверить текущую конфигурацию и сравнить её с конфигурацией первого (неограниченного) контейнера:
$ incus config show limited $ incus config show first
- Проверить объем свободной и используемой памяти в хост-системе и в двух контейнерах:
$ free -m $ incus exec first -- free -m $ incus exec limited -- free -m
- Общий объем памяти идентичен для родительской системы и первого контейнера, поскольку по умолчанию контейнер наследует ресурсы из своей родительской среды. В то же время, ограниченный контейнер имеет только 192 МБАЙТ.
- Проверить количество процессоров, доступных в родительской системе и в двух контейнерах:
$ nproc $ incus exec first -- nproc $ incus exec limited -- nproc
- Опять же, это число идентично для хост-системы и первого контейнера, но у ограниченного контейнера процессор всего один.
Можно менять настройки контейнеров прямо в процессе их работы:
- Настроить ограничение памяти контейнера:
$ incus config set limited limits.memory=128MiB
- Проверить, что конфигурация изменилась:
$ incus config show limited
- Проверить объем памяти, доступный контейнеру:
$ incus exec limited -- free -m
В зависимости от типа экземпляра и используемых драйверов хранилища, можно указать дополнительные параметры конфигурации. Например, настроить размер корневого диска для виртуальной машины.
- Проверить текущий размер корневого диска виртуальной машины alt-vm:
$ incus exec alt-vm -- df -h Filesystem Size Used Avail Use% Mounted on tmpfs 94M 2.0M 92M 3% /run /dev/sda2 9.6G 780M 8.8G 9% / tmpfs 469M 0 469M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 50M 15M 36M 29% /run/incus_agent /dev/sda1 99M 8.3M 91M 9% /boot/efi
- Переопределить размер корневого диска:
$ incus config device override alt-vm root size=30GiB
- Перезапустить виртуальную машину:
$ incus restart alt-vm
- Снова проверить размер корневого диска:
$ incus exec alt-vm -- df -h Filesystem Size Used Avail Use% Mounted on tmpfs 94M 748K 94M 1% /run /dev/sda2 29G 780M 29G 3% / tmpfs 469M 0 469M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 50M 15M 36M 29% /run/incus_agent /dev/sda1 99M 8.3M 91M 9% /boot/efi
Взаимодействие с экземплярами
- Запуск интерактивной оболочки bash в экземпляре:
$ incus exec first -- bash
- Теперь можно выполнять команды внутри контейнера.
- Выйти из контейнера:
$ exit
- Вместо входа в экземпляр и запуска команд внутри, можно запускать команды непосредственно с хоста. Например, установить монитор ресурсов btop в контейнер и запустить его:
$ incus exec first -- apt-get update $ incus exec first -- apt-get install btop -y $ incus exec first -- btop
- Также можно получить доступ к файлам из экземпляра и взаимодействовать с ними.
- Извлечь файл из контейнера:
$ incus file pull first/etc/hosts
- Добавить запись в файл.
$ echo "1.2.3.4 my-example" >>hosts
- Поместить файл обратно в контейнер.
$ incus file push hosts first/etc/hosts
- Пример просмотра файлов журналов внутри контейнера.
$ incus file pull first/var/log/syslog - | less
- Извлечь файл из контейнера:
Сеть
Incus использует сетевой интерфейс incusbr для управления экземплярами.
- Посмотреть список интерфейсов:
$ incus network ls- Из вывода команды видно, что интерфейс incusbr0 является bridge (мостом), который управляется системой Incus. Этот интерфейс используется для сетевого взаимодействия между контейнерами, работающими в Incus, и внешним миром. Мост создает виртуальную сеть, к которой подключаются контейнеры, и обеспечивает их связь с внешними сетями через интерфейс хоста.
- Посмотреть свойства интерфейса incusbr0:
$ incus network show incusbr0 config: ipv4.address: 10.147.209.1/24 ipv4.nat: "true" ipv6.address: fd42:f766:678d:9af3::1/64 ipv6.nat: "true" description: "" name: incusbr0 type: bridge used_by: - /1.0/instances/first - /1.0/instances/alt-vm - /1.0/instances/limited - /1.0/profiles/default managed: true status: Created locations: - none project: default
- Изменить конфигурацию интерфейса incusbr0:
$ incus network edit incusbr0
Управление снимками (снапшотами)
Incus позволяет делать снимки экземпляров для сохранения их текущего состояния.
- Создать снимок с названием
clean:$ incus snapshot create first clean
- Убедиться, что снимок сделан:
$ incus ls first $ incus info first
- Сломать контейнер:
$ incus exec first -- rm /bin/bash
- Убедиться, что контейнер сломан:
$ incus exec first -- bash
- Shell не запустится, так как bash был удален.
- Восстановить состояние контейнера из снимка:
$ incus snapshot restore first clean
- Убедиться, что с контейнером снова всё в порядке:
$ incus exec first -- bash $ exit
- Удалить снимок:
$ incus snapshot delete first clean
Web-интерфейс
Пока в репозиторий не собран пакет incus-ui-canonical, вебку можно добавить так:
- Установить стороннюю .deb-сборку отсюда:
- $ epmi -y repack incus-ui-canonical_6.17-ubuntu24.04-202510101506_arm64.deb);
- Создать конфиг /etc/systemd/system/incus.service.d/ui.conf с путём до веб-каталога:
[Service] Environment = INCUS_UI=/opt/incus/ui/
- Задать порт для веб-интерфейса, например: # incus config set core.https_address :8443;
- Перечитав настройки (# systemctl daemon-reload), перезапустить службу: # systemctl restart incus;
- Зайти на хост, где поднят сервис, по заданному выше порту: https://ip.add.re.ss:8443/;
- Осваиваться и пользоваться.
Нет комментариев для отображения
Нет комментариев для отображения