LINUX.ORG.RU
решено ФорумAdmin

Сборка образа системного контейнера

 , , ,


4

1

Для контейнеров приложений (application containers) есть куча систем сборки: Dockerfile, buildah, Buildkit, img, Bazel, kaniko, и еще куча разных.

Для системных контейнеров (system containers, которые запускают в LXC/LXD/systemd-nspawn) нашел только distrobuilder, но его нет в репозиториях (для меня не проблема, но хочу, чтобы пользователи контейнера могли его легко пересобрать, это было бы плюсом).

Кто-нибудь что-нибудь подскажет, что использовать? Мне нужно взять готовый образ ОС (debian 10, например), скопировать несколько файлов по определенным путям, установить несколько программ из репозитория, и сделать из этого контейнер. В общем, то, что делает dockerfile, только для системных контейнеров.
Хоть ansible бери.

★★★★★

Не совсем понятны страдания..

Делаешь chroot окружение для нужной системы, добавляешь к нему метаданных lxc, таришь все вместе. Готово. Какие ещё системы сборки?! ))

aol ★★★★★
()
Ответ на: комментарий от anonymous

Причем тут формат файла и способ объединения каталогов? Как это относится к моему вопросу?

ValdikSS ★★★★★
() автор топика
Ответ на: комментарий от aol

Я не хочу делать всё вручную или писать скрипты. Это неудобно и добавляет простора для ошибок. Мне нужно пересобирать контейнер одной-двумя командами, и чтобы другие люди могли это легко сделать.

Если вы такое советуете, то вы не понимаете вопрос.

ValdikSS ★★★★★
() автор топика
Последнее исправление: ValdikSS (всего исправлений: 1)
Ответ на: комментарий от anonymous

Мне нужно сделать образ системного контейнера с Debian 10, настроенный определённым образом. Для этого мне нужна система сборки системных контейнеров, для которой можно описывать правила сборки на манер dockerfile.

Система сборки должна скачать готовый образ контейнера Debian 10 (например, с https://uk.images.linuxcontainers.org/images/) или создать его через debootstrap или аналог, настроить его (установить определенные программы, скопировать определенные файлы по заданным путям, прописать метаданные контейнера), и сохранить в виде образа контейнера, пригодного для импорта в LXD и systemd-machined.

Похоже, мне нужен mkosi.

ValdikSS ★★★★★
() автор топика
Ответ на: комментарий от ValdikSS

ну, начнем с того, что ты не контейнер хочешь пересобирать, а образ, из которого этот контейнер собирается.

возьмем, для примера, докер:

FROM scratch

ADD rootfs.tar.gz /

CMD ["/bin/bash"]

тарбол - это то самое chroot-окружение. для lxc сделать имидж примерно так же. полторы команды..

aol ★★★★★
()
Ответ на: комментарий от ValdikSS

Похоже, мне нужен mkosi.

packer еще посмотри. но его сами авторы закапывают уже. говорят, unreliable results на выходе.

не вдавался, почему, но не использую его давно.

aol ★★★★★
()
Ответ на: комментарий от aol

Нет, вы меня не понимаете. Мне нужно собрать готовый образ контейнера, путём конфигурирования Debian 10 (в смысле ОС в целом, а не какого-то конкретного готового образа контейнера) специальным образом.

Система сборки мне для этого нужна для того, чтобы было удобно распространять и готовый контейнер, и сам файл, с помощью которого этот контейнер собрался. У меня нет никакого rootfs.tar.gz изначально, мне его и нужно создать, путём скачивания образа Debian 10 с архива контейнеров LXD или через debootstrap, конфигурирования его особым образом и экспорта в формат контейнера с метаданными для LXD/systemd-machined. Это всё должна делать система сборки, а не вручную запускаться debootstrap, и т.д.

mkosi, похоже, делает именно то, что нужно.

ValdikSS ★★★★★
() автор топика
Последнее исправление: ValdikSS (всего исправлений: 3)

Собирай из докерфайла сборщиком по вкусу, а потом выгружай rootfs через (docker|podman) export.

deadNightTiger ★★★★★
()
Ответ на: комментарий от ValdikSS

Кажется ничто не мешает написать докерфайл, использующий базовый образ дебиана с помощью FROM, устанавливающий нужные пакеты с помощью RUN apt-get install systemd ... и добавляющий кастомные файлы с помощью ADD.

iliyap ★★★★★
()
Ответ на: комментарий от LeNiN

Я с этой страницы и узнал о всех утилитах, что пробовал, так что ничего нового не напишу.

ValdikSS ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.