Podman 5 通过部分重写提升了在 Mac 和 Windows 上的性能和稳定性

Podman 5.0 主要更新总结

Podman 5.0 的最新版本带来了多项重要更新,尤其是在 podman machine 命令的重写、OCI 构件支持、默认采用 Pasta 进行无根网络配置以及对 containers.conf 配置文件的改进。

podman machine 命令重写

podman machine 是用于启动 Linux 虚拟机的基本机制,macOS 和 Windows 系统需要通过它来运行 Linux 容器。Podman 5.0 对 podman machine 进行了全面重写,主要改进包括:

  • 性能与稳定性提升:新实现显著提高了性能和稳定性,特别是在 macOS 上。
  • 代码共享优化:增强了不同虚拟机提供商之间的代码共享,便于未来的维护和修复。
  • macOS 的 Apple Hypervisor 支持:Podman 5.0 弃用了 QEMU,转而使用 Apple Hypervisor,从而大幅提高了 macOS 上的稳定性、启动速度和文件共享性能。

从 Podman 4 升级到 Podman 5 的迁移

由于 Podman 5.0 的底层机制和操作系统改进,从 Podman 4 升级到 Podman 5 并不简单。迁移过程取决于虚拟机是否临时(ephemeral)以及是否易于重建。主要步骤如下:

  1. 备份数据:首先备份所有运行中容器的数据,以便在升级后恢复状态。
  2. 临时容器的处理:对于临时容器,只需运行新的 podman machine reset 命令。
  3. 非临时容器和镜像的处理:可以通过将镜像推送到镜像仓库后再拉取,或者使用 podman commitpodman save 来保存和恢复。

Pasta 成为默认的无根网络后端

Podman 5.0 默认采用 Pasta 作为无根网络后端,取代了之前的 slirp4netns。无根网络允许非特权用户在主机上无法创建网络接口的情况下运行容器。Red Hat 表示,切换到 Pasta 的主要原因是性能提升。

containers.conf 配置文件的改进

Podman 5.0 对其主要配置文件 containers.conf 进行了多项改进,使其更加健壮和灵活:

  • 连接和农场信息的分离:为了避免用户配置和注释被覆盖,连接和农场信息现在存储在单独的 podman-connections.json 文件中,用户无法直接修改。
  • 新增配置字段

    • retryretry_delay:用于指定镜像推送/拉取时的重试次数和间隔。
    • firewall_driver:允许选择 iptables、nftables、firewalld 或不使用防火墙。
    • interface_name:可以通过 device 值自动为容器和主机分配相同的网络接口名称。

其他改进

Podman 5.0 还包括其他多项改进,建议查看完整的发布说明以获取更多详细信息。

总结

Podman 5.0 通过重写 podman machine、采用 Pasta 作为默认无根网络后端以及改进 containers.conf 配置文件,显著提升了性能、稳定性和用户体验。然而,从 Podman 4 升级到 Podman 5 需要谨慎处理,特别是对于非临时容器和镜像的迁移。

阅读 134
0 条评论