Использование dnf

Образ контейнера Fedora/CentOS bootc по умолчанию включает dnf.

Использование dnf как части сборки контейнера

Ключевой целью верхнего уровня этого проекта является поддержка и поощрение создания пользовательских производных контейнерных образов с использованием всех инструментов и методов, применимых к «прикладным» контейнерам.

Во многих примерах используется RUN dnf install. В использовании dnf в контейнере на основе bootc нет ничего особенного по сравнению с прикладным контейнером; это точно такой же код.

Использование dnf во время выполнения

Система монтируется только для чтения при «развёртывании» в качестве физической или виртуальной машины.

В настоящее время, в зависимости от версии, dnf install, например, может начать работать, но завершится ошибкой, например:

error: can’t create transaction lock on /usr/share/rpm/.rpm.lock (Read-only file system)

Это известная ошибка; см., например, этот PR.

Включение «временных» установок пакетов

С помощью команды bootc usroverlay создаётся временная перезаписываемая overlay-файловая система для /usr, и dnf install будет записывать в неё. Это полезный подход для установки инструментов отладки, но изменения будут потеряны при перезагрузке.

rpm-ostree

В настоящее время rpm-ostree также включён в базовый образ, хотя это может измениться в будущих версиях. Подробнее см. rpm-ostree.

Развёртывание образов на основе dnf

Концептуально было бы возможно расширить инструментарий, окружающий fedora-bootc, чтобы также включить модель, в которой это будет работать:

А затем передать это, например, Anaconda для записи на диск.

В этой теоретической модели в развёрнутом образе не было бы `bootc`, и обновления можно было бы выполнять напрямую с помощью `dnf`.

Основными недостатками этого были бы:

- Потеря транзакционных обновлений и неизменяемости во время выполнения по умолчанию
- Потеря поддержки обновления содержимого, не являющегося RPM

В настоящее время такая модель не входит в непосредственный фокус этого проекта.

Однако технически это было бы лишь небольшим расширением существующей поддержки Anaconda для развёртывания сырого tar-архива, и если бы кто-то был заинтересован в работе над этим, это можно было бы добавить в общий объём проектов Fedora/CentOS, связанных с контейнерами.