The newly launched Podman 4.0 contains a full rewrite of the community stack primarily based on Netavark and Aardvark, which can operate alongside the present Container Networking Interface (CNI) stack.
Netavark is a Rust-based device for configuring networking for Linux containers that serves as a substitute for CNI plugins (containernetworking-plugins
on Fedora). Aardvark-dns is now the authoritative DNS server for container information. Along with the brand new stack comes distro packaging adjustments together with repository availability adjustments for Fedora 35.
For Fedora customers
Podman v4 is out there as an official Fedora package deal on Fedora 36 and Rawhide. Both Netavark and Aardvark-dns can be found as official Fedora packages on Fedora 35 and newer variations and kind the default community stack for brand spanking new installations of Podman 4.0.
On Fedora 36 and newer, contemporary installations of Podman v4 will robotically set up Aardvark-dns together with Netavark.
To set up Podman v4:
$ sudo dnf set up podman
To replace Podman from an older model to v4:
$ sudo dnf replace podman
Because Podman v4 options some breaking adjustments from Podman v3, Fedora 35 customers can’t set up Podman v4 utilizing the default repositories. However, in the event you’re keen to provide it a strive, you should utilize a Copr repository as a substitute:
$ sudo dnf copr allow rhcontainerbot/podman4# set up or replace per your wants
$ sudo dnf set up podman
After set up, if you need emigrate all of your containers to make use of Netavark, it’s essential to set network_backend = "netavark"
beneath the [network]
part in your containers.conf
, usually positioned at /usr/share/containers/containers.conf
.
Testing the newest growth model
If you want to check the newest unreleased upstream code, strive the podman-next
Copr:
$ sudo dnf copr allow rhcontainerbot/podman-next$ sudo dnf set up podman
CAUTION: The podman-next
Copr supplies the newest unreleased sources of Podman, Netavark, and Aardvark-dns as RPM Package Managers (RPMs). These will override the variations provided by the official packages.
For Fedora packagers
The Fedora packaging sources for Podman can be found in Fedora’s repository for package deal upkeep. The predominant Podman package deal now not explicitly is dependent upon containernetworking-plugins
. The community stack dependencies are actually dealt with within the containers-common
package deal, which permits for a single level of dependency upkeep for Podman and Buildah.
- containers-common
Requires: container-network-stack
Recommends: netavark- netavark
Provides: container-network-stack = 2- containernetworking-plugins
Provides: container-network-stack = 1
This configuration ensures that:
- New installations of Podman will all the time set up Netavark by default.
- The
containernetworking-plugins
package deal won’t battle with Netavark, and customers can set up them collectively.
Listing bundled dependencies
If that you must listing the bundled dependencies in your packaging sources, you possibly can course of the go.mod
file within the upstream supply. For instance, Fedora’s packaging supply makes use of:
$ awk '{print "Provides: bundled(golang("$1")) = "$2}' go.mod |
kind | uniq | sed -e 's/-/_/g' -e '/bundled(golang())/d' -e '/bundled(golang(go
|module|substitute|require))/d'
Netavark and Aardvark-dns
The .tar vendored sources for Netavark and Aardvark-dns might be hooked up as an upstream launch artifact. Then you possibly can create a Cargo config file to level it to the seller listing:
tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"[source.vendored-sources]
listing = "vendor"
EOF
The Fedora packaging sources for Netavark and Aardvark-dns are additionally out there within the Fedora Project’s repository.
The Fedora packaged variations of the Rust crates that Netavark and Aardvark-dns rely on are ceaselessly old-fashioned (for instance, rtnetlink, sha2, zbus, and zvariant) on the time of preliminary package deal creation. As a outcome, Netavark and Aardvark-dns are constructed utilizing the dependencies vendored upstream, discovered within the vendor
subdirectory.
The netavark binary is put in to /usr/libexec/podman/netavark
, whereas the aardvark-dns binary is put in to /usr/libexec/podman/aardvark-dns
.
The netavark
package deal has a Recommends
on the aardvark-dns
package deal. The aardvark-dns
package deal might be put in by default with Netavark, however Netavark might be purposeful with out it.
Listing bundled dependencies
If that you must listing the bundled dependencies in your packaging sources, you possibly can run the cargo tree
command within the upstream supply. For instance, Fedora’s packaging supply makes use of:
$ cargo tree --prefix none |
awk '{print "Provides: bundled(crate("$1")) = "$2}' |
kind | uniq
To study extra
I hope you discovered these updates useful. If you have got any questions please be at liberty to open a dialogue on GitHub, or contact me or the opposite Podman maintainers by way of Slack, IRC, Matrx, or Discord. Better nonetheless, we’d love so that you can join our community as a contributor!