6.20. 容器
RHEL 中正式发布新的 rhel10/valkey-8 容器镜像
新可用的 rhel10/valkey-8 容器镜像允许原子操作,并支持各种数据类型,如字符串、哈希、列表、集合和排序的集合。该镜像提供高性能,因为它的内存中数据集可以保留到磁盘,也可以通过将命令附加到日志中。
Jira:RHELDOCS-20640[1]
改进了对可重复生成的容器构建的支持
可重复生成的构建可确保给定输入集合一致生成相同的输出。此功能增强解决了之前在容器镜像构建中复杂可重复生成的几个因素。虽然 use -source-date-epoch and -rewrite-timestamp 提高了构建的可重复性,并与设置等常见实践一致,如设置和查找 $SOURCE_DATE_EPOCH,但它不能保证完全的可重复性。
Podman RESTFUL API 的新工件端点
Podman RESTFUL API 现在包括新的工件端点,实现 OCI 工件程序管理。此功能增强简化了将 OCI 工件操作整合到现有系统和脚本中。
Container Tools 软件包已更新
提供了更新的 Container Tools RPM meta-package,其中包括 Podman、Buildah、Skopeo、crun 和 runc 工具。Buildah 软件包已更新至版本 v1.41.0,Skopeo 已更新至版本 1.20.0。
Podman 版本 v5.6 包含以下显著的程序错误修复和增强:
-
用于管理 Quadlets 的新命令已添加为
podman quadlet 安装(为当前用户安装新的 Quadletletletlet)、podman quadlet 列表(listinstalled Quadlets)、podman quadlet print(打印 Quadlet 文件的内容)和podman quadlet rm(删除一个 Quadletlet)。 -
podman kube play命令可以使用io.podman.annotations.cpuset/$ctrname和io.podman.annotations.memory-nodes/$ctrname注解将容器执行限制到特定的 CPU 内核和特定内存节点。 -
podman kube play命令支持 Pod YAML 中的lifecycle.stopSignal字段,允许使用用于停止指定容器的信号。 -
远程 Podman 客户端中提供了
podman volume import和podman volume export命令。 -
podman volume create命令接受两个新选项,即---uid和-gid来设置将创建卷的 UID 和 GID。 -
podman secret create命令有一个新选项,--ignore导致命令成功,即使具有指定名称的 secret 已存在。 -
podman pull命令具有一个新的选项,即,用于配置拉取策略。 -
podman update命令有一个新的选项,用于更新最新的容器,而不是指定特定容器。 -
添加了用于与工件交互的完整 API 端点,包括检查工件(
GET /libpod/artifacts/{name}/json)、列出所有工件(GET /libpod/artifacts/json), 在请求正文中拉取工件(POST /libpod/artifacts/pull), 删除工件(DELETE /libpod/artifacts/{name})、添加工件(或附加到请求正文中的 tar 文件))将工件推送到 registry (/libpod/artifacts/{name}/push),并检索工件的内容(GET /libpod/artifacts/{name}/extract)。 -
添加了一个新命令,
podman artifact提取,将部分或所有 OCI 工件的内容复制到磁盘上的一个位置。 -
podman create、podman run和podman pod create的--mount选项支持一个新的挂载类型,--mount type=artifact以将 OCI 工件挂载到容器中。 -
podman artifact add命令具有两个新选项,即将新文件添加到现有工件中,并使用--file-type指定添加到工件中的文件的 MIME 类型。 -
podman artifact rm命令具有一个新的选项,用于删除本地存储中的所有工件。 -
podman kube generate和podman kube play命令支持一个新的注解io.podman.annotation.pids-limit/$containername,保留kube generate和kube play中容器的 PID 限制。 -
Quadlet
.container单元支持三个新键,Memory=(为创建的容器设置最大内存)、ReloadCmd(通过 systemdExecReload执行命令)和ReloadSignal(通过 systemdExecReload,使用给定信号提高容器)。 -
Quadlet
.container、.image和.build单元支持两个新密钥:Retry(失败时重试拉取镜像的次数)和RetryDelay(重试尝试之间的延迟)。 -
Quadlet
.pod单元支持一个新的键HostName=来设置 pod 的主机名。 -
Quadlet 文件支持
安装部分中的新选项UpheldBy,对应于 systemdUpholds选项。 -
指定为 systemd 依赖项的 Quadlet 单元的名称会自动转换,如
Wants=my.container是有效的。
有关值得注意的变化的更多信息,请参阅 上游发行注记。
ADD 和 COPY 指令现在支持- -link 选项
Buildah 和 Podman 现在支持 Containerfiles 中的 ADD 和 COPY 指令的-- link 标志,这会导致在构建镜像中添加新内容作为自己的层。
firewalld中现在提供了 StrictForwardPorts
当 /etc/firewalld/firewalld.conf 配置文件中的 StrictForwardPorts 选项被设置为 yes 时,不再可能从 Podman 进行端口转发,并尝试使用 -p 或 -P 选项启动容器或 pod 会返回错误。所有端口都必须使用 firewalld 进行转发。这样可确保容器不允许流量通过防火墙,而无需管理员干预。详情请查看 netavark-firewalld 手册页。
新的 rhel10/nodejs-24 和 rhel10/nodejs-24-minimal 容器镜像
Red Hat Container Registry 中现在提供了实时 registry.redhat.io/rhel10/nodejs-24 和 registry.redhat.io/rhel10/nodejs-24-minimal 容器镜像。
Node.js 是一个在 Chrome 的 JavaScript 运行时构建的平台,用于轻松构建快速、可扩展的网络应用程序。Node.js 使用事件驱动的、非阻塞 I/O 模型,使其轻便且高效,非常适合在分布式系统上运行的数据密集型实时应用程序。
Jira:RHELDOCS-20749[1]
RHEL 镜像模式支持在运行时创建根目录和符号链接
在这个版本中,您可以使用 RHEL 镜像模式在系统部署后创建根目录和符号链接,然后将文件系统返回到只读模式。因此,您可以在具有不同文件系统要求的多个部署环境中使用单个基础镜像。
Jira:RHELDOCS-21230[1]
bootc-image-builder 默认使用本地容器存储
在这个版本中,bootc-image-builder 工具默认在本地模式下运行,这意味着它不再从远程 registry 中拉取容器镜像。要构建磁盘镜像,您必须在构建磁盘镜像前预加载系统本地容器 registry 中的基本引导容器镜像。如果您有依赖于自动镜像拉取(pull)的现有工作流,您必须更新它们。此更改通过在构建过程中减少外部网络依赖项来提高安全性。
Jira:RHELDOCS-21218[1]