Поиск по сайту:

Что пользователи и упаковщики 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. А еще лучше, мы бы хотели, чтобы вы присоединились к нашему сообществу в качестве участника!

Статьи по данной тематике: