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!