新发布的 Podman 4.0 的特色是基于 Netavark 和 Aardvark 对网络堆栈进行了完全重写,它将与现有的容器网络接口 (CNI) 堆栈并行运行。
Netavark 是一款基于 Rust 的工具,用于配置 Linux 容器的网络,它可以替代 CNI 插件(Fedora 上的 containernetworking-plugins
)。Aardvark-dns 现在是容器记录的权威 DNS 服务器。除了新的堆栈之外,还带来了发行版打包更改以及 Fedora 35 的存储库可用性更改。
对于 Fedora 用户
Podman v4 在 Fedora 36 和 Rawhide 上作为官方 Fedora 软件包提供。Netavark 和 Aardvark-dns 均在 Fedora 35 及更高版本上作为官方 Fedora 软件包提供,并构成 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,则必须在 containers.conf
中的 [network]
部分下设置 network_backend = "netavark"
,该文件通常位于 /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 软件包维护者
Podman 的 Fedora 打包源可在 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'
Netavark 和 Aardvark-dns
.tar 供应商来源的 Netavark 和 Aardvark-dns 将作为上游发布工件附加。然后,您可以创建一个 Cargo 配置文件以将其指向 vendor 目录
tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
EOF
Netavark 和 Aardvark-dns 的 Fedora 打包源也可在 Fedora 项目的存储库中找到。
Netavark 和 Aardvark-dns 依赖的 Rust crate 的 Fedora 打包版本经常过时(例如,rtnetlink、sha2、zbus 和 zvariant),这发生在初始软件包创建时。因此,Netavark 和 Aardvark-dns 是使用上游供应商提供的依赖项构建的,这些依赖项在 vendor
子目录中找到。
netavark 二进制文件安装到 /usr/libexec/podman/netavark
,而 aardvark-dns 二进制文件安装到 /usr/libexec/podman/aardvark-dns
。
netavark
软件包在 aardvark-dns
软件包上具有 Recommends
。默认情况下,aardvark-dns
软件包将与 Netavark 一起安装,但 Netavark 在没有它的情况下也能正常工作。
列出捆绑的依赖项
如果您需要在打包源中列出捆绑的依赖项,则可以在上游源中运行 cargo tree
命令。例如,Fedora 的打包源使用
$ cargo tree --prefix none | \
awk '{print "Provides: bundled(crate("$1")) = "$2}' | \
sort | uniq
了解更多信息
希望这些更新对您有所帮助。如果您有任何问题,请随时在 GitHub 上发起讨论,或通过 Slack、IRC、Matrx 或 Discord 联系我或其他 Podman 维护人员。更好的是,我们很乐意您加入我们的社区成为贡献者!
评论已关闭。