Что пользователи и упаковщики Linux должны знать о Podman 4.0 в Fedora
Новые функции Podman обеспечивают лучшую поддержку контейнеров и повышенную производительность.
Недавно выпущенный Podman 4.0 представляет собой полностью переписанный сетевой стек на основе Netavark и Aardvark, который будет функционировать вместе с существующим стеком Container Networking Interface (CNI).
Netavark — это основанный на Rust инструмент для настройки сети для контейнеров Linux, который служит заменой плагинов CNI (containernetworking-plugins
в Fedora). Aardvark-dns теперь является авторитетным DNS-сервером для записей контейнера. Вместе с новым стеком происходят изменения в упаковке дистрибутива, а также изменения доступности репозитория для Fedora 35.
Для пользователей Федоры
Podman v4 доступен как официальный пакет Fedora для Fedora 36 и Rawhide. И Netavark, и Aardvark-dns доступны как официальные пакеты Fedora в Fedora 35 и более поздних версиях и образуют сетевой стек по умолчанию для новых установок Podman 4.0.
В Fedora 36 и новее при новой установке Podman v4 автоматически устанавливается Aardvark-dns вместе с Netavark.
Чтобы установить Podman v4:
$ sudo dnf install podman
Чтобы обновить Podman со старой версии до v4:
$ sudo dnf update podman
Поскольку Podman v4 содержит некоторые критические изменения по сравнению с Podman v3, пользователи Fedora 35 не могут установить Podman v4, используя репозитории по умолчанию. Однако, если вы хотите попробовать, вместо этого вы можете использовать репозиторий Copr:
$ sudo dnf copr enable rhcontainerbot/podman4
# install or update per your needs
$ sudo dnf install podman
Если после установки вы хотите перенести все свои контейнеры на использование Netavark, вы должны установить network_backend="netavark"
в разделе [network]
в ваших контейнерах. .conf
, обычно расположенный по адресу /usr/share/containers/containers.conf
.
Тестирование последней версии разработки
Если вы хотите протестировать последний невыпущенный исходный код, попробуйте podman-next
Copr:
$ sudo dnf copr enable rhcontainerbot/podman-next
$ sudo dnf install podman
ВНИМАНИЕ: podman-next
Copr предоставляет последние неизданные исходные коды Podman, Netavark и Aardvark-dns в качестве менеджеров пакетов RPM (RPM). Они переопределят версии, поставляемые официальными пакетами.
Для упаковщиков Fedora
Исходные коды пакетов Fedora для Podman доступны в репозитории Fedora для обслуживания пакетов. Основной пакет Podman больше не зависит явно от containernetworking-plugins
. Зависимости сетевого стека теперь обрабатываются в пакете containers-common
, который позволяет использовать единую точку обслуживания зависимостей для Podman и Buildah.
- containers-common
Requires: container-network-stack
Recommends: netavark
- netavark
Provides: container-network-stack = 2
- containernetworking-plugins
Provides: container-network-stack = 1
Эта конфигурация гарантирует, что:
- При новых установках Podman по умолчанию всегда устанавливается Netavark.
- Пакет
containernetworking-plugins
не будет конфликтовать с Netavark, и пользователи могут устанавливать их вместе.
Перечисление связанных зависимостей
Если вам нужно перечислить связанные зависимости в источниках пакетов, вы можете обработать файл go.mod
в исходном коде восходящего потока. Например, исходный код пакета Fedora использует:
$ awk '{print "Provides: bundled(golang("$1")) = "$2}' go.mod | \
sort | uniq | sed -e 's/-/_/g' -e '/bundled(golang())/d' -e '/bundled(golang(go\
|module\|replace\|require))/d'
Нетаварк и Муравьед-DNS
Исходные коды Netavark и Aardvark-dns в формате .tar будут прикреплены как артефакт основной версии. Затем вы можете создать файл конфигурации Cargo, чтобы указать ему каталог поставщика:
tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
EOF
Исходные коды пакетов Fedora для Netavark и Aardvark-dns также доступны в репозитории проекта Fedora.
Упакованные версии контейнеров Rust в Fedora, от которых зависят Netavark и Aardvark-dns, часто устаревают (например, rtnetlink, sha2, zbus и zvariant) на момент первоначального создания пакета. В результате Netavark и Aardvark-dns создаются с использованием зависимостей, предоставленных вышестоящими поставщиками и находящихся в подкаталоге vendor
.
Бинарный файл netavark устанавливается в /usr/libexec/podman/netavark
, а двоичный файл aardvark-dns устанавливается в /usr/libexec/podman/aardvark-dns
.
Пакет netavark
имеет Recommends
в пакете aardvark-dns
. Пакет aardvark-dns
будет установлен по умолчанию вместе с Netavark, но Netavark будет работать и без него.
Перечисление связанных зависимостей
Если вам нужно перечислить связанные зависимости в источниках упаковки, вы можете запустить команду cargo Tree
в исходном коде вышестоящего уровня. Например, исходный код пакета Fedora использует:
$ cargo tree --prefix none | \
awk '{print "Provides: bundled(crate("$1")) = "$2}' | \
sort | uniq
Узнать больше
Надеюсь, эти обновления оказались для вас полезными. Если у вас есть какие-либо вопросы, пожалуйста, откройте обсуждение на GitHub или свяжитесь со мной или другими сопровождающими Podman через Slack, IRC, Matrx или Discord. А еще лучше, мы бы хотели, чтобы вы присоединились к нашему сообществу в качестве участника!