LXD

Материал из ALT Linux Wiki

LXD это новое поколение системы управления контейнерами, базирующееся на Linux containers.

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

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

# apt-get install lxd

Добавить отображение uid и gid в файлы /etc/subuid и /etc/subgid:

root:100000:65536
lxd:100000:65536

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

# systemctl enable --now lxd

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

# lxd init

Добавить пользователя от которого будет запускаться lxd в группу lxd.

# usermod username --append --groups lxd

Запуск

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

$ lxc image list images:alt

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

alt/Sisyphus (3 more) a6bb3268c7a1 yes Alt Sisyphus amd64 (20190710_01:17) x86_64 227.27MB "Jul 10 2019 at 12:00am (UTC)"
alt/Sisyphus/arm64 (1 more) 4d860461a016 yes Alt Sisyphus arm64 (20190710_01:17) aarch64 177.23MB "Jul 10 2019 at 12:00am (UTC)"
alt/Sisyphus/i386 (1 more) 62d0664ce372 yes Alt Sisyphus i386 (20190710_01:17) i686 183.37MB "Jul 10 2019 at 12:00am (UTC)"
alt/Sisyphus/ppc64el (1 more) 143672c92ab2 yes Alt Sisyphus ppc64el (20190710_01:17) ppc64le 183.72MB "Jul 10 2019 at 12:00am (UTC)"
alt/p8 (3 more) b6674565b63b yes Alt p8 amd64 (20190710_01:17) x86_64 231.58MB "Jul 10 2019 at 12:00am (UTC)"
alt/p8/i386 (1 more) 864957bdb260 yes Alt p8 i386 (20190710_01:17) i686 182.66MB "Jul 10 2019 at 12:00am (UTC)"
alt/p9 (3 more) 262a6ff9259c yes Alt p9 amd64 (20190710_01:17) x86_64 226.51MB "Jul 10 2019 at 12:00am (UTC)"
alt/p9/arm64 (1 more) 7643261d1273 yes Alt p9 arm64 (20190710_01:17) aarch64 176.94MB "Jul 10 2019 at 12:00am (UTC)"
alt/p9/i386 (1 more) 4faf887493d7 yes Alt p9 i386 (20190710_01:17) i686 183.38MB "Jul 10 2019 at 12:00am (UTC)"
alt/p9/ppc64el (1 more) df49ca8bf30a yes Alt p9 ppc64el (20190710_01:17) ppc64le 182.81MB "Jul 10 2019 at 12:00am (UTC)"

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

  • amd64
  • arm64
  • i386
  • ppc64el

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

$ lxc launch images:alt/p9 first

Убедится, что он есть.

$ lxc ls

Зайти в него.

$ lxc exec first bash

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

$ lxc stop first

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

$ lxc rm first

Сборка образов

Сборка с использованием официального rootfs

Образы для lxd собираются с помощью distrobuilder.

# apt-get install distrobuilder
# distrobuilder build-lxd /usr/share/doc/distrobuilder-*/doc/ci/alt.yaml -o image.release=p9 -o image.architecture=amd64

Вместо /usr/share/doc/distrobuilder-*/doc/ci/alt.yaml можно передать свой конфиг для настройки будущего образа, а через image.release=Sisyphus можно собрать другой релиз (в данном случае Sisyphus).

Добавить полученый образ в lxd.

$ lxc image import lxd.tar.xz rootfs.squashfs --alias myimage

Сборка с использованием mkimage-profiles

Наиболее похож на официальный образа профиль ve/lxc-systemd-networkd. Собрать его можно следующей командой.

$ make ve/lxc-systemd-networkd.squash

Есть еще профили ve/lxc-systemd-etcnet и ve/lxc-sysvinit-etcnet.

Для получения метаданных можно использовать скрипт - https://raw.githubusercontent.com/alt-cloud/gen-lxd-metadata/master/gen-lxd-metadata.sh. Запустив его таким образом (с подстановкой необходимых параметров):

$ ./gen-lxd-metadata.sh \
   --name myimage \
   --description myimage \
   --architecture x86_64 \
   --template-hosts \
   lxd.tar.xz

Осталось добавить полученый образ в lxd.

$ lxc image import lxd.tar.xz lxc-systemd-networkd-latest-x86_64.squash --alias myimage