Incus: различия между версиями

Материал из ALT Linux Wiki
Строка 105: Строка 105:
# Проверить объем памяти, доступный контейнеру:
# Проверить объем памяти, доступный контейнеру:
#: <syntaxhighlight lang="console">$ incus exec limited -- free -m</syntaxhighlight>
#: <syntaxhighlight lang="console">$ incus exec limited -- free -m</syntaxhighlight>
В зависимости от типа экземпляра и используемых вами драйверов хранилища вы можете указать дополнительные параметры конфигурации. Например, вы можете настроить размер корневого диска для виртуальной машины:
# Проверить текущий размер устройства корневого диска виртуальной машины ubuntu-vm:
#: <syntaxhighlight lang="console">
$ incus exec ubuntu-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
</syntaxhighlight>
# Переопределение размера корневого дискового устройства:
#: <syntaxhighlight lang="console">$ incus config device override ubuntu-vm root size=30GiB</syntaxhighlight>
# Перезапустить виртуальную машину:
#: <syntaxhighlight lang="console">$ incus restart ubuntu-vm</syntaxhighlight>
# Проверить размер устройства корневого диска снова:
#: <syntaxhighlight lang="console">
$ incus exec ubuntu-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
</syntaxhighlight>


== Взаимодействие с экземплярами ==
== Взаимодействие с экземплярами ==

Версия от 18:28, 28 декабря 2024

Incus — это современная, безопасная и мощная система управления контейнерами и менеджер виртуальных машин.

Установка и настройка

Установить пакет incus.

# apt-get install incus

Включить сервис incus.

# systemctl enable --now incus

После установки создается 2 группы:

incus - Предоставляет базовый пользовательский доступ.
incus-admin - Обеспечивает полный контроль над Incus.

Предоставить пользователю testuser полный контроль.

# usermod -a -G incus-admin testuser

Применить изменения не перезапуская сессию пользователя.

# newgrp incus-admin

Incus требует некоторой начальной настройки сети и хранилища. Это можно выполнить в интерактивном режиме с помощью:

$ incus admin init

Или же базовая автоматизированная конфигурация:

$ incus admin init --minimal

Запуск

Доступные образы ALT на images.linuxcontainers.org

$ incus image list images:alt

Примерный вывод:

alt/Sisyphus (3 more) a6bb3268c7a1 yes Alt Sisyphus amd64 (20241227_01:17) x86_64 CONTAINER 227.27MB 2024/12/27 00:00 UTC
alt/Sisyphus/arm64 (1 more) 4d860461a016 yes Alt Sisyphus arm64 (20241227_01:17) aarch64 CONTAINER 177.23MB 2024/12/27 00:00 UTC
alt/Sisyphus/cloud (1 more) 62d0664ce372 yes Alt Sisyphus amd64 (20241227_01:17) x86_64 CONTAINER 183.37MB 2024/12/27 00:00 UTC
alt/Sisyphus/cloud/arm64 143672c92ab2 yes Alt Sisyphus arm64 (20241227_01:17) aarch64 CONTAINER 183.72MB 2024/12/27 00:00 UTC
alt/p10 (3 more) b6674565b63b yes Alt p10 amd64 (20241227_01:17) x86_64 CONTAINER 231.58MB 2024/12/27 00:00 UTC
alt/p10/arm64 (1 more) 864957bdb260 yes Alt p10 arm64 (20241227_01:17) aarch64 CONTAINER 182.66MB 2024/12/27 00:00 UTC
alt/p10/cloud (1 more) 262a6ff9259c yes Alt p10 amd64 (20241227_01:17) x86_64 CONTAINER 226.51MB 2024/12/27 00:00 UTC
alt/p10/cloud/arm64 7643261d1273 yes Alt p10 arm64 (20241227_01:17) aarch64 CONTAINER 176.94MB 2024/12/27 00:00 UTC
alt/p11 (3 more) 4faf887493d7 yes Alt p11 amd64 (20241227_01:17) x86_64 CONTAINER 183.38MB 2024/12/27 00:00 UTC
alt/p11/arm64 (1 more) df49ca8bf30a yes Alt p11 arm64 (20241227_01:17) aarch64 CONTAINER 182.81MB 2024/12/27 00:00 UTC

Образы доступны для следующих архитектур:

  • x86_64
  • aarch64

Запустить первый контейнер.

$ incus launch images:alt/p11 first

Запустить второй контейнер.

$ incus launch images:alt/Sisyphus second

Сделать третий контейнер из копии первого.

$ incus copy first third

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

$ incus start third

В дополнение к контейнерам, Incus позволяет запускать виртуальные машины, используя образы, имеющие тип "VIRTUAL-MACHINE", например: Запустить виртуальную машину с названием ubuntu-vm, используя образ Ubuntu 22.04.

$ incus launch images:ubuntu/22.04 ubuntu-vm --vm

Вывести список всех созданных контейнеров и виртуальных машин.

$ incus ls

Запросить дополнительную информацию о каждом экземпляре.

$ incus info first
$ incus info second
$ incus info third
$ incus info ubuntu-vm

Зайти в контейнер.

$ incus exec first bash

Остановить первый контейнер.

$ incus stop first

И удалить его.

$ incus rm first

Принудительно удалить запущенный контейнер.

$ incus rm second --force

Вывести список образов.

$ incus image ls

Настройка экземпляров

Существует несколько ограничений и параметров конфигурации, которые вы можете установить для своих экземпляров. Все параметры экземпляров можно найти тут Запустите контейнер и ограничьте его одним виртуальным процессором и 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

Опять же, это число идентично для хостовой системы и первого контейнера, но у ограниченного контейнера процессор всего 1.

Можно менять настройки контейнеров, во время их работы:

  1. Настроить ограничение памяти контейнера:
    $ incus config set limited limits.memory=128MiB
    
  2. Проверить, что конфигурация изменилась:
    $ incus config show limited
    
  3. Проверить объем памяти, доступный контейнеру:
    $ incus exec limited -- free -m
    

В зависимости от типа экземпляра и используемых вами драйверов хранилища вы можете указать дополнительные параметры конфигурации. Например, вы можете настроить размер корневого диска для виртуальной машины:

  1. Проверить текущий размер устройства корневого диска виртуальной машины ubuntu-vm:
    $ incus exec ubuntu-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
    
  2. Переопределение размера корневого дискового устройства:
    $ incus config device override ubuntu-vm root size=30GiB
    
  3. Перезапустить виртуальную машину:
    $ incus restart ubuntu-vm
    
  4. Проверить размер устройства корневого диска снова:
    $ incus exec ubuntu-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 -- /usr/bin/btop

Вы также можете получить доступ к файлам из своего экземпляра и взаимодействовать с ними:

  1. Извлечь файл из контейнера.
    $ incus file pull first/etc/hosts
    
  2. Добавить запись в файл.
    $ echo "1.2.3.4 my-example" >> hosts
    
  3. Поместить файл обратно в контейнер.
    $ incus file push hosts first/etc/hosts
    
  4. Пример просмотра файлов журналов внутри контейнера.
    $ incus file pull first/var/log/syslog - | less
    

Управление снапшотами

Incus позволяет делать снапшоты экземпляров, что позволяет сохранить текущее состояние экземпляра.

  1. Создать снапшот с названием "clean"
    $ incus snapshot create first clean
    
  2. Убедиться, что снапшот был сделан.
    $ incus ls first
    
    $ incus info first
    
  3. Ломаем контейнер.
    $ incus exec first -- rm /bin/bash
    
  4. Убедимся, что контейнер сломан (Shell не запустится, так как bash был удален).
    $ incus exec first -- bash
    
  5. Восстановить состояние контейнера на момент снапшота.
    $ incus snapshot restore first clean
    
  6. Убедиться, что с контейнером все в порядке.
    $ incus exec first -- bash
    
    $ exit
    
  7. Удалить снапшот.
    $ incus snapshot delete first clean