Pesquisa de site

O que usuários e empacotadores de Linux precisam saber sobre o Podman 4.0 no Fedora


Os novos recursos do Podman oferecem melhor suporte para contêineres e melhor desempenho.

O recém-lançado Podman 4.0 apresenta uma reescrita completa da pilha de rede baseada em Netavark e Aardvark, que funcionará junto com a pilha existente de Container Networking Interface (CNI).

Netavark é uma ferramenta baseada em Rust para configurar redes para contêineres Linux que serve como um substituto para plug-ins CNI (containernetworking-plugins no Fedora). Aardvark-dns agora é o servidor DNS oficial para registros de contêineres. Junto com a nova pilha, vêm as mudanças no pacote da distribuição, juntamente com as mudanças na disponibilidade do repositório para o Fedora 35.

Para usuários Fedora

Podman v4 está disponível como um pacote oficial do Fedora no Fedora 36 e Rawhide. Tanto o Netavark quanto o Aardvark-dns estão disponíveis como pacotes oficiais do Fedora no Fedora 35 e versões mais recentes e formam a pilha de rede padrão para novas instalações do Podman 4.0.

No Fedora 36 e mais recente, novas instalações do Podman v4 instalarão automaticamente o Aardvark-dns junto com o Netavark.

Para instalar o Podman v4:

$ sudo dnf install podman

Para atualizar o Podman de uma versão mais antiga para a v4:

$ sudo dnf update podman

Como o Podman v4 apresenta algumas alterações importantes do Podman v3, os usuários do Fedora 35 não podem instalar o Podman v4 usando os repositórios padrão. No entanto, se você estiver ansioso para experimentar, poderá usar um repositório Copr:

$ sudo dnf copr enable rhcontainerbot/podman4

# install or update per your needs
$ sudo dnf install podman

Após a instalação, se desejar migrar todos os seus contêineres para usar o Netavark, você deve definir network_backend="netavark" na seção [network] em seus contêineres .conf, normalmente localizado em /usr/share/containers/containers.conf.

Testando a versão de desenvolvimento mais recente

Se você quiser testar o código upstream não lançado mais recente, tente o podman-next Copr:

$ sudo dnf copr enable rhcontainerbot/podman-next

$ sudo dnf install podman

CUIDADO: O podman-next Copr fornece as fontes não lançadas mais recentes de Podman, Netavark e Aardvark-dns como gerenciadores de pacotes RPM (RPMs). Estes substituirão as versões fornecidas pelos pacotes oficiais.

Para empacotadores Fedora

As fontes de empacotamento do Fedora para Podman estão disponíveis no repositório do Fedora para manutenção de pacotes. O pacote principal do Podman não depende mais explicitamente de containernetworking-plugins. As dependências da pilha de rede agora são tratadas no pacote containers-common, que permite um único ponto de manutenção de dependência para Podman e Buildah.

- containers-common
Requires: container-network-stack
Recommends: netavark

- netavark
Provides: container-network-stack = 2

- containernetworking-plugins
Provides: container-network-stack = 1

Esta configuração garante que:

  • Novas instalações do Podman sempre instalarão o Netavark por padrão.
  • O pacote containernetworking-plugins não entrará em conflito com o Netavark e os usuários podem instalá-los juntos.

Listando dependências agrupadas

Se precisar listar as dependências agrupadas em suas fontes de empacotamento, você pode processar o arquivo go.mod na fonte upstream. Por exemplo, a fonte de empacotamento do Fedora usa:

$ 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'

Netavark e Aardvark-dns

As fontes .tar vendidas para Netavark e Aardvark-dns serão anexadas como um artefato de lançamento upstream. Em seguida, você pode criar um arquivo de configuração do Cargo para apontá-lo para o diretório do fornecedor:

tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
EOF

As fontes de empacotamento do Fedora para Netavark e Aardvark-dns também estão disponíveis no repositório do Projeto Fedora.

As versões empacotadas do Fedora das caixas Rust das quais Netavark e Aardvark-dns dependem estão frequentemente desatualizadas (por exemplo, rtnetlink, sha2, zbus e zvariant) no momento da criação inicial do pacote. Como resultado, Netavark e Aardvark-dns são construídos usando as dependências vendidas upstream, encontradas no subdiretório vendor.

O binário netavark é instalado em /usr/libexec/podman/netavark, enquanto o binário aardvark-dns é instalado em /usr/libexec/podman/aardvark-dns.

O pacote netavark tem um Recommends no pacote aardvark-dns. O pacote aardvark-dns será instalado por padrão com o Netavark, mas o Netavark funcionará sem ele.

Listando dependências agrupadas

Se precisar listar as dependências agrupadas em suas fontes de empacotamento, você pode executar o comando cargo tree na fonte upstream. Por exemplo, a fonte de empacotamento do Fedora usa:

$ cargo tree --prefix none |  \
awk '{print "Provides: bundled(crate("$1")) = "$2}' | \
sort | uniq

Aprender mais

Espero que você tenha achado essas atualizações úteis. Se você tiver alguma dúvida, sinta-se à vontade para abrir uma discussão no GitHub ou entre em contato comigo ou com outros mantenedores do Podman através do Slack, IRC, Matrx ou Discord. Melhor ainda, adoraríamos que você se juntasse à nossa comunidade como colaborador!