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 generatepodman kube play 现在可用,替换了 podman generate kubepodman play kube 命令。podman generate kubepodman 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

Bugzilla:2163752

新软件包:passt

此更新添加了 passt 软件包,这样就可以为容器使用 pasta 无根网络后端。

Slirp 连接(当前被 Podman 用作非特权网络的默认连接)相比,pasta 提供了以下改进:

  • 改进了 IPv6 吞吐量及更好的支持,其中包括对邻居发现协议(NDP)和 DHCPv6 的支持
  • 能够配置 IPv6 上 TCP 和 UDP 端口的端口转发

要使用 pasta 连接到 Podman 容器,请使用 --network pasta 命令行选项。

Bugzilla:2209419