Podman v6.0.0 发布说明

Podman v6.0.0 发布说明

Podman v6.0.0 是一次重要的发布,重点在于现代化核心基础设施、提升安全性以及优化用户体验。此次更新将网络栈转向 Netavark、Pasta 和 nftables,同时扩展了 Quadlet 和 Podman Machine 的功能。

现代化的网络栈

Podman v6.0.0 通过放弃 slirp4netnsiptables,转而使用 NetavarkPastanftables 来简化网络基础设施。这一转变降低了维护成本,并为未来网络功能的开发奠定基础。

此外,发布中还引入了对 Pesto rootless 端口转发 的实验性支持。该功能专为在自定义网络上运行的无根容器保留正确的源 IP,解决了无根容器网络中的常见限制。

Quadlet 演进与 Systemd 集成

Quadlet 经过了重大改造,以提升将容器作为 systemd 服务管理的体验。主要改进包括:

  • REST API 支持: Quadlet 现在包含 REST API,以实现更好的编程管理。
  • 增强的卷管理: .volume 单元的功能得到扩展,能够更精细地控制容器卷。
  • 发行版打包: 新增了搜索路径,便于将 Quadlet 打包发布。
  • 改进的追踪: 更好地追踪关联文件,简化容器生命周期的管理。

社区成员指出,Quadlet 和无根容器是从 Docker 迁移到 Podman 的主要驱动力,因为它们能够在如 RockyLinux 等系统上通过 Ansible 和 SystemD 托管容器,而无需守护进程。

增强的 Podman Machine 与兼容性

Podman Machine 现在提供更流畅的多提供商体验,便于在不同 VM 提供商之间切换。新增了 podman machine os update 命令,用于保持 VM 环境的最新状态。

为了进一步降低 Docker 迁移用户的门槛,Podman v6.0.0 包含了更新的 Docker API 支持以及优化的命令输出,以提升整体兼容性。

配置与系统迁移

Podman 更新了配置文件的处理方式,为管理多用户环境的管理员提供更可靠的体验。

从系统角度来看,发布中提供了数据库迁移路径。升级到 Podman v6.0.0 的用户其数据库将自动迁移至 SQLite,解决了之前与 Bolt DB 相关的弃用警告。

社区观点与取舍

虽然该发布因技术进步受到欢迎,但社区讨论中也出现了关于从 Docker 迁移的若干争议点:

  • Docker 兼容性: 有用户反馈,尽管 Podman 旨在兼容 Docker,但仍存在一些细微差异,可能导致基于 Docker 的项目出现问题。

"我不喜欢 Podman 的一点是,它假装兼容 Docker,却有一些细微差异会在关键时刻让你吃亏。"

  • 生态系统锁定: 使用以 Docker 为中心的部署工具(如 Coolify)的用户仍被锁定在 Docker 生态系统中,因为这些工具的依赖。

  • 安全性与无守护进程架构: Podman 的支持者强调,不需要根守护进程以及避免 Docker 常见的 “docker group” 权限问题,带来了安全优势。

"我最看重的理由是:没有 ‘container root’ / ‘docker group’ = ‘host root’ 的乱象,Podman 不会产生垃圾信息,也不会在我的防火墙(iptables)上留下漏洞。"

  • 开发工作流: 部分开发者质疑 Podman 相较于 Docker Compose 的可移植性,认为 Compose 的单文件可移植性在团队开发和可复现性方面更优。

Sources