Podman项目在官方博客里用“modernize”“transition”这类词形容v6.0.0的发布,读起来像一次波澜不惊的常规迭代:网络栈换个底座,机器管理更顺手,Quadlet功能更全。但把这份公告和Fedora的变更说明、社区反馈放在一起看,情况完全不同——这更像一次强制联动升级五六个组件、直接砍掉三项旧核心功能的高风险大版本,博客里几乎没提代价。
“过渡”这个词用得太客气
博客原话是网络栈“transitions … towards”Netavark、Pasta和nftables,听着是渐进式迁移。实际情况是,slirp4netns、旧的iptables网络路径、BoltDB数据库后端、cgroups v1支持在v6.0里被直接移除,不是新旧共存的过渡期。
还在用BoltDB存数据的用户,升级后得手动执行一次podman system migrate,不做这一步大概率直接遇到启动故障。跑在老发行版或未升级内核服务器上、还依赖cgroups v1的环境,同样没有退路可选。
官方说的是过渡,用户拿到的是移除通知。
一次绑定式升级,企业环境最先感到疼
v6.0不是单独升级Podman就完事。它同步要求Netavark和Aardvark-dns升到2.0.0、Buildah升到1.44、Skopeo升到1.23,外加container-libs common配置文件版本联动。
这些组件平时各自维护节奏不同,很多企业靠发行版统一打包分发。哪个组件没跟上,容器构建或网络功能就可能局部失效。跨组件绑定在容器生态里不算新鲜——Docker升级containerd、runc时也这么干过——但Podman这次一口气锁定四个组件版本,对还在用旧发行版镜像的团队是个明确的升级窗口,不是想拖就能拖的事。
- 风险.BoltDB、cgroups v1、slirp4netns同时被砍,老环境不做迁移检查直接升级容易在生产上翻车。
Pesto端口转发:默认并不生效
博客重点介绍的Pesto rootless端口转发,能在自定义网络里给rootless容器保留正确的源IP,这对做访问审计、防火墙策略的团队确实有用。但官方文档写得很清楚:这仍是实验性功能,默认转发方式还是旧的rootlessport。想用pasta内核级转发,得自己去containers.conf里手动加一行rootless_port_forwarder="pasta"。
普通用户升级完什么都不改,根本感知不到这项“重点新功能”——它是留给安全团队按需开启的选项,不是开箱即用的默认体验。
顺带一提,博客里的GitHub发布链接指向的是podman-container-tools/podman,而Fedora变更页和其他权威引用一直用的是containers/podman这个官方仓库。链接对不上号,点之前最好自己核实一下。
谁该现在升,谁该再等等
Quadlet这次也不是无痛改造:管理关联文件的方式从旧的追踪文件换成子目录管理,依赖旧机制的运维脚本或第三方工具可能得跟着调整。Podman Machine新增的podman machine os update命令还不支持WSL,Linux下已有VM的卷挂载也有失效风险,可能需要重建虚拟机——这些细节官方博客都没提。
对已经把生产环境跑在Podman rootless加systemd组合上的团队,升级前该做的是先在测试环境跑一遍system migrate,确认Quadlet单元文件和网络配置能正常拉起,再排期上生产。对还停留在Docker、只是想看Podman成不成熟的用户,这次Docker兼容性的提升集中在CLI和API层面,Compose体验依旧是公认短板——不是一次能让人立刻换阵营的更新。
