LXD
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/distrobuilder/examples/alt
Вместо /usr/share/distrobuilder/examples/alt можно передать свой конфиг для настройки будущего образа.
Добавить полученый образ в lxd.
$ lxc image import lxd.tar.xz rootfs.squashfs --alias myimage
Сборка с использованием mkimage-profiles
Для официального образа используется профиль ve/systemd-networkd. Собрать его можно следующей командой.
$ make ve/systemd-networkd.tar.xz
Есть еще профили ve/systemd-etcnet и ve/sysvinit-etcnet.
Затем нужно подготовить метаданные. Создать файл metadata.yaml со следующим содержимым:
architecture: "x86_64" creation_date: 1624481977 # To get current date in Unix time, use `date +%s` command properties: architecture: "x86_64" description: "ALT Sisyphus (20210623)" os: "altlinux" release: "sisyphus"
И сделать metadata.tar.xz.
$ tar -cvJf metadata.tar.xz metadata.yaml
Добавить полученый образ в lxd.
$ lxc image import systemd-networkd.tar.xz metadata.yaml --alias myimage