podman v5.8.0 版本更新介绍
发布日期: 2026-02-12
版本号: v5.8.0
Podman本次更新新增了多项功能:
podman quadlet install命令现支持安装包含多个独立Quadlet文件的合并文件;Quadlet的.container文件支持AppArmor配置;在podman machine虚拟机上使用podman artifact add命令时,若路径已共享则会从虚拟机文件系统直接读取以提升性能;podman update命令新增--ulimit选项用于更新容器资源限制;podman exec命令新增--no-session选项以禁用会话跟踪从而提升性能。
系统变更方面,Podman在重启时会自动将旧版BoltDB数据库迁移至SQLite,并提供podman system migrate --migrate-db命令供手动强制迁移。podman secret create -命令现在支持直接通过终端输入密钥,不再强制要求通过管道输入。
此次更新修复了多个错误,包括:podman play kube创建的容器健康检查时序问题;systemd限流导致的健康检查失败;podman export命令事件类型错误;podman kube play处理环境变量优先级和缺失image字段时的异常;podman volume mount在插件驱动下返回空路径;--rootfs创建的容器错误显示健康检查状态;podman build --pull=newer功能失效;Quadlet文件中绑定挂载路径空格处理错误;远程客户端分离键和环境变量传递问题;podman artifact push/pull忽略认证文件;Windows HyperV下路径处理异常;以及--pod-id-file选项验证不严等问题。
API方面新增了Quadlet交互相关接口,并修复了容器日志时间戳精度、健康检查命令空格处理以及密钥删除接口路径命名等问题。
此外,更新了Buildah、containers/storage、containers/image和containers/common等关联库的版本。
更新内容 (中文)
功能特性
podman quadlet install命令现在可以安装包含多个独立 Quadlet 文件的文件。文件之间必须用新行中的---分隔符分开,且每个部分必须以# FileName=<name>行开头以命名新的 Quadlet (#27384)。- Quadlet
.container文件现在支持新键AppArmor,用于配置容器的 AppArmor 配置文件 (#27095)。 - 当对
podman machine虚拟机执行podman artifact add命令时,如果要加载或构建的路径已共享到虚拟机中,Podman 将从虚拟机的文件系统加载,而不是通过 REST API 流式传输数据,从而提高性能 (#26321)。 podman update命令现在包含一个新选项--ulimit,用于更新容器的资源限制 (#26381)。podman exec命令现在包含一个新选项--no-session,它禁用 exec 会话的跟踪以提高性能和启动时间 (#26588)。
变更
- Podman 现在将在系统重启时自动尝试将旧版 BoltDB 数据库迁移到 SQLite。这是必要的,因为 Podman 6.0(将于五月发布)将移除对 BoltDB 的支持。如果无法自动迁移,可以使用新选项
podman system migrate --migrate-db来手动强制迁移。 podman secret create -命令不再要求通过管道提供密钥,而是允许通过终端输入密钥 (#27879)。
错误修复
- 修复了一个错误,即使用
initialDelaySeconds选项通过podman play kube创建的容器会在初始延迟到期前运行健康检查 (#27678)。 - 修复了一个错误,即健康检查有时由于 systemd 速率限制而无法执行。
- 修复了一个错误,即
podman export命令会发出Mount事件而不是Export事件。 - 修复了一个错误,即
podman kube play命令错误处理envFrom和env字段设置的环境变量之间的优先级 (#27287)。 - 修复了一个错误,即当解析缺少
image字段的 Pod YAML 时,podman kube play命令会崩溃 (#27784)。 - 修复了一个错误,即当卷由插件驱动处理时,
podman volume mount命令返回空路径 (#27858)。 - 修复了一个错误,即使用
--rootfs而非从镜像创建的容器,即使未定义健康检查,也会在starting状态显示有健康检查 (#27651)。 - 修复了一个错误,即
podman build命令的--pull=newer选项无法正常工作 (#22845)。 - 修复了一个错误,即 Quadlet
.container文件中的RequiresMountsFor字段错误处理包含空格的绑定挂载路径。 - 修复了一个错误,即远程 Podman 客户端的
podman run --detach-keys选项不接受空字符串(即无分离键)(#27414)。 - 修复了一个错误,即远程 Podman 客户端的
podman build --secret ... env=VAR选项会错误地尝试在服务器端读取环境变量,而不是从客户端读取 (#27494)。 - 修复了一个错误,即
podman artifact push和podman artifact pull命令忽略了通过--authfile选项提供的认证凭据 (#27421)。 - 修复了一个错误,即在使用 HyperV 机器提供程序时,Windows 路径在某些情况下处理不正确 (#27571)。
- 修复了一个错误,即
podman run --pod-id-file选项验证不正确,允许在具有不适当用户命名空间配置的 Pod 中创建容器 (#26848)。
API
- 添加了用于与 Quadlet 交互的新 API,包括
GET /libpod/quadlets/{name}/file(打印 Quadlet 文件内容)、GET /libpod/quadlets/{name}/exists(检查给定 Quadlet 是否存在)、POST /libpod/quadlets(安装一个或多个 Quadlet)、DELETE /libpod/quadlets(删除一个或多个 Quadlet)以及DELETE /libpod/quadlets/{name}(删除单个 Quadlet)。 - 修复了一个错误,即容器的 Compat 和 Libpod 日志端点未使用纳秒级精度报告时间戳 (#27961)。
- 修复了一个错误,即容器的 Compat Create 端点错误处理参数中包含空格的健康检查命令 (#26519)。
- 修复了一个错误,即 Secrets 的 Compat Remove 端点错误命名为
DELETE /secret/{name}而非DELETE /secrets/{name}(#27548)。
杂项
- 将 Buildah 更新至 v1.43.0
- 将 containers/storage 库更新至 v1.62.0
- 将 containers/image 库更新至 v5.39.1
- 将 containers/common 库更新至 v0.67.0
更新内容 (原始)
Features
- The
podman quadlet installcommand can now install files which contain multiple separate Quadlet files. The files must be separated with a---delimeter on a new line, and each section must begin with a# FileName=<name>line to name the new Quadlet (#27384). - Quadlet
.containerfiles now support a new key,AppArmor, for configuring the container’s AppArmor profile (#27095). - When running the
podman artifact addcommand against apodman machineVM, if the path being loaded or built is shared into the VM, Podman will load it from the VM’s filesystem instead of streaming the data through the REST API, improving performance (#26321). - The
podman updatecommand now features a new option,--ulimit, to update container ulimits (#26381). - The
podman execcommand now features a new option,--no-session, which disables tracking of the exec session to improve performance and startup time (#26588).
Changes
- Podman will now automatically attempt to migrate legacy BoltDB databases to SQLite when the system reboots. This is necessary as support for BoltDB will be removed in Podman 6.0 in May. If automatic migration is not possible, a new option,
podman system migrate --migrate-db, will manually force a migration. - The
podman secret create -command no longer requires that the secret be provided through a pipe, and instead allows typing the secret through the terminal (#27879).
Bugfixes
- Fixed a bug where containers created by
podman play kubewith a healthcheck using theinitialDelaySecondsoption would run healthchecks before the initial delay had expired (#27678). - Fixed a bug where healthchecks would sometimes fail to execute due to systemd rate limits.
- Fixed a bug where the
podman exportcommand would emit aMountevent instead of anExportevent. - Fixed a bug where the
podman kube playcommand incorrectly handled precedence between environment variables set by both theenvFromandenvfields (#27287). - Fixed a bug where the
podman kube playcommand would panic when parsing Pod YAML missing theimagefield (#27784). - Fixed a bug where the
podman volume mountcommand returned empty paths when volumes were handled by a plugin driver (#27858). - Fixed a bug where containers created with
--rootfsinstead of from an image would show that they had a healthcheck in thestartingstate even if no healthcheck was defined (#27651). - Fixed a bug where the
podman buildcommand’s--pull=neweroption did not function correctly (#22845). - Fixed a bug where the
RequiresMountsForfield in Quadlet.containerfiles incorrectly handled bind-mount paths which contained spaces. - Fixed a bug where the remote Podman client’s
podman run --detach-keysoption did not accept an empty string (IE, no detach keys) (#27414). - Fixed a bug where the remove Podman client’s
podman build --secret ... env=VARoption would incorrectly try to read the environment variable on the server side, instead of from the client (#27494). - Fixed a bug where the
podman artifact pushandpodman artifact pullcommands ignored authentication credentials given by the--authfileoption (#27421). - Fixed a bug where Windows paths were incorrectly handled under some circumstances when using the HyperV machine provider (#27571).
- Fixed a bug where the
podman run --pod-id-fileoption was not properly validated, allowing the creation of containers in pods with improper user namespace configuration (#26848).
API
- Added new APIs for interacting with Quadlets, including
GET /libpod/quadlets/{name}/file(print contents of a Quadlet file),GET /libpod/quadlets/{name}/exists(check if the given Quadlet exists),POST /libpod/quadlets(install one or more Quadlets),DELETE /libpod/quadlets(remove one or more Quadlets), andDELETE /libpod/quadlets/{name}(remove a single Quadlet). - Fixed a bug where the Compat and Libpod Logs endpoints for Containers did not use nanosecond-level precision for reported timestamps (#27961).
- Fixed a bug where the Compat Create endpoint for Containers incorrectly handled healthcheck commands with arguments containing spaces (#26519).
- Fixed a bug where the Compat Remove endpoint for Secrets was misnamed as
DELETE /secret/{name}instead ofDELETE /secrets/{name}(#27548).
Misc
- Updated Buildah to v1.43.0
- Updated the containers/storage library v1.62.0
- Updated the containers/image library to v5.39.1
- Updated the containers/common library to v0.67.0
下载链接
- podman-5.8.0-setup.exe
- podman-installer-macos-amd64.pkg
- podman-installer-macos-arm64.pkg
- podman-installer-macos-universal.pkg
- podman-installer-windows-amd64.exe
- podman-installer-windows-amd64.msi
- podman-installer-windows-arm64.exe
- podman-installer-windows-arm64.msi
- podman-remote-release-darwin_amd64.zip
- podman-remote-release-darwin_arm64.zip
- podman-remote-release-windows_amd64.zip
- podman-remote-release-windows_arm64.zip
- podman-remote-static-linux_amd64.tar.gz
- podman-remote-static-linux_arm64.tar.gz
- shasums