Podman 6.0.0 升级笔记:slirp4netns、CNI、cgroups v1 全被移除
项目地址:,官网
Podman 6.0.0 是 2026 年春季 GA 的大版本。项目已迁入 CNCF 旗下的 GitHub 组织,Go import path 从 github.com/containers/podman/v5 改为 go.podman.io/podman/v6。组件依赖也被强制绑定:Podman v6.0.0 必须搭配 Buildah v1.44.0、Skopeo v1.23、Netavark 与 Aardvark v2.0.0,以及 container-libs 仓库 common/v0.68.0 发布版的配置文件。
跨大版本升级,花时间最多的一般不是新特性,而是被删掉的那部分。
被删除的能力
- BoltDB 数据库后端。系统如果还在用 BoltDB,Podman 6 首次启动会尝试自动迁移到 SQLite。
- Intel Mac 支持。
- Windows 10 支持。
- cgroups v1 支持,必须使用 cgroups v2。
- iptables 支持,改用 nftables。
- CNI 网络支持,改用 Netavark。
- slirp4netns rootless 网络栈,改用 Pasta;与之绑定的全局选项
--network-cmd-path一并移除。 - 配置文件解析逻辑大重写,容器配置文件可能需要迁移或拆分,以适配新的 client/server 配置逻辑。
升级前要做的
BoltDB 是最容易踩的一步。如果系统仍在使用 BoltDB,先升级到 Podman 5.8 并重启,让迁移完成,再升到 Podman 6,否则升级后容器状态不可用。
仍用 cgroups v1 的系统不再受支持,先把 cgroup 版本切到 v2。
网络这边,依赖 slirp4netns 的网络配置在 Podman 6 下不再工作,必须使用 Netavark + Pasta——这本来就是 Podman 5 的默认组合。
Quadlet:从 .app 到子目录,多了一组管理命令
Quadlet 的行为变了。以前 Quadlet 及关联文件用 .app 文件跟踪,现在改为放到子目录,减少 bug,也便于手动管理 podman quadlet install 添加的 Quadlet。
新增的管理命令:
podman quadlet install:为当前用户安装新 Quadlet,新增--replace选项,替换同名冲突的 Quadlet(#26930)podman quadlet list(ls为别名)podman quadlet print:打印 Quadlet 文件内容podman quadlet rm:删除 Quadlet
这几条目前远程 Podman 客户端不可用。
单元类型和键也有更新:
- 新增
.artifact文件类型,可用 Quadlet 管理 OCI artifact(#25778) .volume单元新增UID=、GID=、Options=三个键.container单元支持挂载匿名卷(Mount=不带 source)(#28497).network单元新增InterfaceName=键,指定网络接口名.container新增HttpProxy键,用于关闭 HTTP 代理选项从宿主自动转发进容器(#26925)- 支持卷与网络的模板化依赖(#25136)
- 新增两个搜索路径:
/usr/share/containers/systemd/users与/usr/share/containers/systemd/users/${UID},便于发行版打包分发(#27843)
podman quadlet list 新增 Pod 字段(输出该 .container 单元所属的 pod)、--filter status=(#28369)和 --noheading。生成 Quadlet 单元时,若使用了与 Podman 已知有冲突的选项(如 [Service] 段的 User=、Group=、DynamicUser=),Quadlet 会给出警告(#26543)。停止容器时不再使用中间文件,而是把容器/pod 名字直接传给 podman stop / podman pod stop。
网络默认值与 rootless 端口转发
网络隔离现在默认启用,提升 Docker 兼容性与安全性;针对「隔离被禁用」的 Docker 兼容 API 特殊绕过代码已删除(#27349)。
Netavark 网络后端不再用 iptables,转向 nftables;network create 逻辑合并进 Netavark,内部结构改为保留容器网络顺序。
containers.conf 新增实验性字段 rootless_port_forwarder="pasta":rootless 网桥网络改用 Pasta 经 Pesto 做内核级端口转发,保留客户端源 IP。默认仍是 rootlessport(Podman 5.x 的默认),后续稳定后再考虑切换。
podman network create 的 --route 支持 blackhole / unreachable / prohibit 路由类型,需要 netavark 2.0 起支持(#20022):
podman network create --route 10.20.30.40/24,blackhole ...
其余几条:
- Podman 默认使用 Pasta 的
--map-guest-addr选项,用于/etc/hosts中的host.containers.internal,让容器默认能访问宿主(#19213) - 使用 Netavark v1.15+ 时,非默认网络中的容器不再被加上默认搜索域
dns.podman,按名解析仍可用 podman info现在会输出默认 rootless 网络命令(pasta或slirp4netns)- 修复 rootless 容器使用 Pasta 驱动时不能正确处理宿主 localhost DNS 解析器的问题(#22044)
其他零散变更
podman ps与podman prune新增--filter annotation=,按注解过滤容器(#28562)- 事件现在包含 artifact 生命周期事件(create/pull/push/remove)(#27260);pods 与 volumes 产生的事件包含 label 属性(#26480)
podman info现在会报告 CDI spec 目录与发现的 CDI 设备podman image trust系列命令现在使用--signature-...集合- 修复
podman kube play为未命名容器添加空 network alias、导致 Netavark 发出多余警告的 bug
podman machine
Linux 上 podman machine 创建的 VM 现在用 systemd 挂载宿主卷;已有的 Linux machine VM 的卷挂载会因此失效,需要重建 VM。另外新增 podman machine os update 命令用于更新 VM 环境,多虚拟机供应商的体验更顺畅。