4.19. 容器
新的 podman
RHEL 系统角色现在可用
从 Podman 4.2 开始,您可以使用 podman
系统角色来管理 Podman 配置、容器以及运行 Podman 容器的 systemd
服务。
Jira:RHELPLAN-118705
Podman 现在支持审计事件
从 Podman v4.4 开始,您可以直接从单个事件和 journald
条目中收集关于容器的所有相关信息。要启用 Podman 审计,请修改 container.conf
配置文件,并将 events_container_create_inspect_data=true
选项添加到 [engine]
部分中。数据采用 JSON 格式,与 podman container inspect
命令的格式相同。如需更多信息,请参阅 如何在 Podman 4.4 中使用新的容器事件和审计功能。
Jira:RHELPLAN-136602
container-tools
meta-package 已更新
container-tools
RPM 元软件包现已正式发布,其中包括 Podman、Buildah、Skopeo,crun 和 runc 工具现在可用。与之前的版本相比,这个版本应用了一系列 bug 修复和增强。
Podman v4.4 中的显著变化包括:
- 引入了 Quadlet,这是一个新的 systemd 生成器,它可使用 Podman 轻松创建和维护 systemd 服务。
-
添加了一个新命令
podman network update
,它会更新容器和 pod 的网络。 -
添加了一个新命令
podman buildx version
,它会显示 buildah 版本。 - 容器现在可以启动健康检查,允许运行命令来确保在激活常规健康检查前完全启动容器。
-
使用
podman --dns
命令支持自定义 DNS 服务器选择。 - 现在,提供使用 Fulcio 和 Rekor 创建并验证 sigstore 签名。
- 改进了与 Docker 的兼容性(新选项和别名)。
-
改进了 Podman 的 Kubernetes 集成 - 命令
podman kube generate
和podman kube play
现在可用,替换了podman generate kube
和podman play kube
命令。podman generate kube
和podman play kube
命令仍可用,但建议使用新的podman kube
命令。 -
systemd 管理的由
podman kube play
命令创建的 pod 现在与 sd-notify 集成,使用io.containers.sdnotify
注解(或对特定容器使用io.containers.sdnotify/$name
)。 -
现在,由
podman kube play
创建的 systemd 管理的 pod 可以使用io.containers.auto-update
注解(或使用特定容器的io.containers.auto-update/$name
)自动更新。
Podman 已升级至版本 4.4,要了解有关显著变化的更多信息,请参阅 上游发行注记。
Jira:RHELPLAN-136607
Aardvark 和 Netavark 现在支持自定义 DNS 服务器选择
Aardvark 和 Netavark 网络堆栈现在支持容器的自定义 DNS 服务器选择,而不是主机上的默认 DNS 服务器。您有两个用于指定自定义 DNS 服务器的选项:
-
在
containers.conf
配置文件中添加dns_servers
字段。 -
使用新的
--dns
Podman 选项指定 DNS 服务器的 IP 地址。
--dns
选项会覆盖 container.conf
文件中的值。
Jira:RHELPLAN-138024
Skopeo 现在支持生成 sigstore 密钥对
您可以使用 skopeo generate-sigstore-key
命令生成一个 sigstore 公钥/私钥对。如需更多信息,请参阅 skopeo-generate-sigstore-key
手册页。
Jira:RHELPLAN-151481
Toolbox 现在可用
有了 toolbox
工具,您可以在系统上使用容器化的命令行环境,而无需直接安装故障排除工具。Toolbox 构建在 Podman 和其他来自 OCI 的标准容器技术之上。如需更多信息,请参阅 toolbx。
Jira:RHELPLAN-150266
容器镜像现在有一个两位标签
在 RHEL 9.0 和 RHEL 9.1 中,容器镜像有一个三位标签。从 RHEL 9.2 开始,容器镜像现在有一个两位标签。
Jira:RHELPLAN-147982
提供签名镜像的多个可信的 GPG 密钥功能
/etc/containers/policy.json
文件支持一个新的 keyPaths
字段,该字段接受一个包含可信密钥的文件的列表。因此,在默认配置中现在接受使用红帽正式发行(GA)和 Beta GPG 密钥签名的容器镜像。
例如:
"registry.redhat.io": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPaths": ["/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta"] } ]
Jira:RHELPLAN-129327
Podman 现在支持预执行钩子
位于 /usr/libexec/podman/pre-exec-hooks
和 /etc/containers/pre-exec-hooks
目录中的 root 拥有的插件脚本定义了对容器操作的精细控制,特别是阻止了未授权的操作。
/etc/containers/podman_preexec_hooks.txt
文件必须由管理员创建,并可为空。如果 /etc/containers/podman_preexec_hooks.txt
不存在,则不会执行插件脚本。如果所有插件脚本都返回零值,则执行 podman
命令,否则 podman
命令将退出,并具有继承的退出码。
红帽建议使用以下命名约定以便以正确的顺序执行脚本:DDD-plugin_name.lang
,如 010-check-group.py
。请注意,插件脚本在创建时是有效的。在插件脚本之前创建的容器不会受到影响。
Bugzilla:2119200
sigstore 签名现在可用
从 Podman 4.2 开始,您可以使用容器镜像签名的 sigstore 格式。sigstore 签名会与容器镜像一起存储在容器注册中心 ,而无需有单独的签名服务器来存储镜像签名。
Jira:RHELPLAN-74672
Toolbox 可以创建 RHEL 9 容器
在以前的版本中,Toolbox 工具只支持 RHEL UBI 8 镜像。有了这个版本,Toolbox 现在还支持 RHEL UBI 9。因此,您可以创建基于 RHEL 8 或 9 的 Toolbox 容器。
以下命令基于与主机系统相同的 RHEL 版本创建了一个 RHEL 容器:
$ toolbox create
另外,您可以使用特定的 RHEL 版本创建容器。例如,要创建基于 RHEL 9.2 的容器,请使用以下命令:
$ toolbox create --distro rhel --release 9.2
新软件包:passt
此更新添加了 passt
软件包,这样就可以为容器使用 pasta
无根网络后端。
与 Slirp
连接(当前被 Podman 用作非特权网络的默认连接)相比,pasta
提供了以下改进:
- 改进了 IPv6 吞吐量及更好的支持,其中包括对邻居发现协议(NDP)和 DHCPv6 的支持
- 能够配置 IPv6 上 TCP 和 UDP 端口的端口转发
要使用 pasta
连接到 Podman 容器,请使用 --network pasta
命令行选项。