这是 v5.2.0 的最终候选版本。以下是初步的发布说明。

Podman 发布 v5.2.0-RC3_Pod

功能
  • Podman 现在支持使用 libkrun 作为在 MacOS 上创建虚拟机的后端。libkrun 后端的优势在于允许将 GPU 挂载到虚拟机中以加速任务。默认后端仍然是 applehv。
  • Quadlet 现在支持.build 文件,这使得可以由 Quadlet 构建镜像,然后由 Quadlet 容器使用。
  • Quadlet .container 文件现在支持两个新字段,LogOpt 用于指定容器日志配置,StopSignal 用于指定容器停止信号(#23050)。
  • Quadlet .container 和.pod 文件现在支持一个新字段,NetworkAlias,用于添加网络别名。
  • Quadlet 插入搜索路径已扩展,包括顶级类型插入(container.d, pod.d)和截断的单元插入(unit-.container.d)(#23158)。
  • Podman 现在支持一个新命令,podman system check,它将识别(如果可能的话,还会纠正)本地容器存储中的损坏。
  • podman machine reset 命令现在将重置当前操作系统上可用的所有提供者(例如,确保在 Windows 上同时移除 HyperV 和 WSL podman 机器 VM)。
变更
  • Podman 现在需要新的内核挂载 API,引入了对 Linux Kernel v5.2 或更高版本的依赖。
  • Quadlet .image 单元现在依赖于 network-online.target(#21873)。
  • 当同时指定 --privileged 时,podman create 和 podman run 的 --device 选项不再被忽略(#23132)。
  • podman start 和 podman stop 命令现在不再打印启动 / 停止的 pod 的完整 ID,而是打印用户用于指定 pod 的输入(例如,podman pod start b 将打印 b 而不是 pod 的完整 ID)(#22590)。
  • podman machine 在 Linux 上创建的虚拟机现在使用 virtiofs 而不是 9p 来挂载宿主文件系统。现有的挂载将在机器重启或重建时透明地更改。这应该会提高宿主挂载的性能和可靠性。这需要在宿主系统上安装 virtiofsd 才能运行。
  • 现在允许同时使用 --squash 和 --layers=false 选项进行 podman build。
  • Podman 现在在创建 cgroups 时将容器的停止超时传递给 systemd,导致在 systemd 停止范围时得到尊重。这应该可以防止在系统关机时由于运行的 Podman 容器而挂起。
  • podman machine init 的 --volume-driver 选项现在已被弃用。
Bug 修复
  • 修复了一个 bug,在使用 --sdnotify=healthy 选项创建的无根容器启动时可能会恐慌(#22651)。
  • 修复了一个 bug,在使用 --sdnotify=healthy 选项创建且快速退出的容器有时会返回错误,而不是通知容器已准备就绪(#22760)。
  • 修复了一个 bug,podman system reset 命令没有删除容器 / 镜像 blob 缓存(#22825)。
  • 修复了一个 bug,Podman 有时即使在容器创建时指定了 --cgroups=disabled 选项,也会为自己创建一个 cgroup(#20910)。
  • 修复了一个 bug,容器中的 /etc/hosts 文件在文件末尾没有创建新行(#22729)。
  • 修复了一个 bug,podman start 命令在启动处于停止状态的容器时有时会恐慌。
  • 修复了一个 bug,如果使用 sqlite 数据库后端时存在卷,podman system renumber 命令将失败(#23052)。
  • 修复了一个 bug,podman container restore 命令无法成功恢复 pod 中的容器。
  • 修复了一个 bug,当使用远程 Podman 客户端时,podman diff 的错误消息会建议使用 --latest 选项(#23038)。
  • 修复了一个 bug,用户可以为 Podman 机器分配比宿主更多的内存(#18206)。
  • 修复了一个 bug,podman events 命令很少无法报告发生的错误(#23165)。
  • 修复了一个 bug,在退出时使用 --cidfile 选项运行的 systemd 单元中的容器有时不会被正确移除。
  • 修复了一个 bug,在重启后运行的第一个 Podman 命令在使用短暂模式时可能导致挂起(#22984)。
  • 修复了一个 bug,如果宿主上不存在某些路径,Podman 可能会抛出关于数据库配置不匹配的错误。
  • 修复了一个 bug,如果另一个 Podman 进程在启动过程中停止了容器,podman run 和 podman start 命令可能会抛出奇怪的错误(#23246)。
  • 修复了一个 bug,podman system service 命令在终止时可能会泄露挂载。
  • 修复了一个 bug,如果向 podman images 传递了无效的镜像过滤器,Podman 远程客户端会恐慌(#23120)。
  • 修复了一个 bug,当容器在命令运行时被移除,podman
  • 修复了一个 bug,当在命令运行时移除容器,podman auto-update 和 podman system df 命令可能会失败(#23279)。
  • 修复了一个 bug,当准备 VM 镜像时尝试解压一个空文件,podman machine init 命令可能会崩溃(#23281)。
  • 修复了一个 bug,当命令运行时移除 pod,podman ps --pod 和 podman pod stats 命令有时可能会失败(#23282)。
  • 修复了一个 bug,当显示所有容器(或对于 pod 统计来说是 pod 容器)时,如果容器在命令运行时停止,podman stats 和 podman pod stats 命令有时会以 “容器已停止” 错误退出(#23334)。
  • 修复了一个 bug,如果容器健康检查的输出没有包含最终的换行符,则不会被正确记录(#23332)。
  • 修复了一个 bug,当启动第二个转发相同主机端口的容器时,即使第二个容器由于端口已被绑定而无法启动,现有容器的端口转发防火墙规则也可能会被覆盖。
  • 修复了一个 bug,由 podman play kube 命令创建的容器有时可能无法正确清理其网络堆栈(#21569)。
API
  • 镜像构建 API 现在接受在 Platform 查询参数中的逗号分隔列表,允许单个 API 调用为多种架构构建镜像(#22071)。
  • 修复了一个 bug,当使用模糊不清的卷名调用时,卷的删除端点会返回格式不正确的错误(#22616)。
  • 修复了一个 bug,当调用不存在的容器的统计信息端点时,会返回格式不正确的错误(#22612)。
  • 修复了一个 bug,在应该返回 500 错误代码的情况下,Pod 的启动端点会返回 409 错误代码(#22989)。
  • 修复了一个 bug,Pod 的 Top 端点会先返回 200 状态码,然后接着返回错误(#22986)。
杂项
  • Podman 不再要求其 root 和 runroot 的所有父目录都是全局可执行的(#23028)。
  • 当使用 - f 选项但指向不存在的文件时,来自 podman build 命令的错误消息已得到改进(#22940)。
  • Podman 的 Windows 安装程序现在使用 WiX 5 构建。
  • 更新了 gvisor-tap-vsock 库到 v0.7.4。此版本包含了一个修复,用于在 macOS 上快速链接上有大量网络流量时 gvproxy 崩溃的问题。
  • 更新 Buildah 到 v1.37.0。
  • 更新 containers/image 库到 v5.32.0。
  • 更新 containers/storage 库到 v1.55.0。
  • 更新 containers/common 库到 v0.60.0。