4.19. 容器


RHEL 的镜像模式现在支持 FIPS 模式

在这个版本中,您可以在构建 bootc 镜像时启用 FIPS 模式,以将系统配置为只使用 FIPS 批准的模块。您可以使用 bootc-image-builder,它需要在 Containerfile 配置中启用 FIPS 加密策略,或使用 RHEL Anaconda 安装,另外在 Containerfile 中启用 FIPS 模式,还需要在引导系统安装时添加 fips=1 内核参数。如需了解更多详细信息 ,请参阅 安装启用了 FIPS 模式的系统

以下是一个 Containerfile,带有启用 fips=1 内核参数的指令:

FROM registry.redhat.io/rhel9/rhel-bootc:latest#
# Enable fips=1 kernel argument:
https://containers.github.io/bootc/building/kernel-arguments.html
COPY 01-fips.toml /usr/lib/bootc/kargs.d/
# Install and enable the FIPS crypto policy
RUN dnf install -y crypto-policies-scripts && update-crypto-policies --no-reload --set FIPS

Jira:RHELDOCS-18585[1]

RHEL 的镜像模式现在支持逻辑绑定的应用程序镜像

在这个版本中,您可以支持生命周期绑定到基本 bootc 镜像的容器镜像。这有助于为应用程序和操作系统划分不同的操作流程,应用程序镜像则从基础镜像引用为镜像文件或等效镜像。因此,您可以为系统安装管理多个容器镜像,例如,对于断开连接的安装,系统必须镜像,而不仅仅是镜像(mirror)。

Jira:RHELDOCS-18666[1]

Podman 和 Buildah 支持将 OCI 工件添加到镜像索引中

有了此更新,您可以创建工件清单,并将其添加到镜像索引中。

buildah manifest add 命令现在支持以下选项:

  • 创建 工件清单的--artifact 选项
  • --artifact-type,--artifact-config-type ,--artifact-layer-type,--artifact-exclude-titles, 和- subject 选项来微调它创建的工件清单的内容。

buildah manifest annotate 命令现在支持以下选项:

  • --index 选项,用于对索引本身设置注解,而不是镜像索引中的一个条目
  • 用于设置镜像索引的 subject 字段的--subject 选项。

buildah manifest create 命令现在支持 the- annotation 选项,来将注解添加到新镜像索引中。

Jira:RHEL-33572

提供了可以禁用 Podman healthchek 事件的选项

此增强在 [engine] 部分下的 containers.conf 配置文件中添加了一个新的 healthcheck_events 选项,以禁用 health_status 事件的生成。将 healthcheck_events=false 设置为禁用日志记录 healthchek 事件。

Jira:RHEL-34603

Podman 中的运行时资源更改是持久的

使用 podman update 命令更新容器配置是持久的。请注意,这个增强用于 SQLite 和 BoltDB 数据库后端。

Jira:RHEL-33567

完全支持构建多架构镜像

现在完全支持创建多架构容器镜像的 podman farm build 命令。

场是一组有 unix Podman 套接字在其中运行的机器。场中的节点可以有不同架构的机器。podman farm build 命令比 podman build --arch --platform 命令快。

您可以使用 podman farm build 来执行以下操作:

  • 在农场的所有节点上构建一个镜像。
  • 将场中所有节点上的镜像捆绑到清单列表中。
  • 在所有农场节点上执行 podman build 命令。
  • 将镜像推送到 --tag 选项指定的注册中心。
  • 本地创建一个清单列表。
  • 将清单列表推送到注册中心。

清单列表包含场中存在的每个原生架构类型的一个镜像。

Jira:RHEL-34609

Podman 中用于 pod 的 Quadlets 可用

从 Podman v5.0 开始,您可以使用 Quadlet 从 pod 描述中自动生成 systemd 服务文件。

Jira:RHEL-33574

Podman v2.0 RESTful API 已更新

新字段已添加到 libpod/images/json 端点中:

  • isManifest 布尔值字段,用于确定目标是否为清单。libpod 端点返回镜像和清单列表。
  • 镜像列表的 osarch 字段。

Jira:RHEL-34612

Kubernetes YAML 现在支持数据卷容器作为 init 容器

现在可以使用 "io.podman.annotations.kube.image.automount/$ctrname" 注解在 Kubernetes YAML 中指定自动挂载为卷的镜像的列表。使用 podman run --mount type=image,source=<image>,dst=<path>,subpath=<path > 的基于镜像的挂载现在支持一个新的选项 subpath,来仅将镜像的一部分挂载到容器中。

Jira:RHEL-34605

Container Tools 软件包已更新

现在提供了更新的 Container Tools RPM meta-package,其包括 Podman、Buildah、Skopeo、crunrunc 工具。与之前的版本相比,Podman v5.0 包含以下值得注意的 bug 修复和增强:

  • podman manifest add 命令现在支持一个新的 --artifact 选项,来将 OCI 工件添加到清单列表中。
  • podman createpodman runpodman push 命令现在支持 --retry-retry-delay 选项,来为推送和拉取镜像配置重试。
  • podman runpodman exec 命令现在支持 --preserve-fd 选项,来将文件描述符的列表传到容器中。它是 -preserve-fds 的一种替代方法,其传递特定数量的文件描述符。
  • Quadlet 现在支持模板单元。
  • podman kube play 命令现在可以使用 volume.podman.io/image 注解创建基于镜像的卷。
  • 使用 podman kube play 命令创建的容器现在可以使用新注解 io.podman.annotations.volumes-from 来包含其他容器中的卷。
  • 使用 podman kube play 命令创建的 Pod 现在可以使用 pod 定义中的 io.podman.annotations.userns 注解 来设置用户命名空间选项。
  • podman createpodman run--gpus 选项现在与 Nvidia GPU 兼容。
  • podman createpodman run--mount 选项支持一个新的挂载选项 no-dereference,来将符号链接而不是其去掉了引用的目标挂载到容器中。
  • Podman 现在支持新的 --config 全局选项,以指向可以获取注册中心登录凭据的 Docker 配置。
  • podman ps --format 命令现在支持新的 .Label 格式指定符。
  • podman run --userns=autouidmappinggidmapping 选项现在可以使用 @ 符号作为主机 ID 的前缀来映射到主机 ID。
  • Quadlet 现在支持 systemd 样式的插入目录。
  • Quadlet 现在支持使用新的 .pod 单元文件创建 pod。
  • Quadlet 现在在 .container 文件中支持两个新键,EntrypointStopTimeout
  • Quadlet 现在支持在 .container 文件中多次指定 Ulimit 键,以便对容器设置多个 ulimit
  • Quadlet 现在支持在 .container 文件中将 Notify 键设置为 healthy,以便在健康检查开始传递时仅通知容器已启动。
  • 用于容器的 podman inspect 命令的输出已更改。Entrypoint 字段从字符串改为字符串数组,StopSignal 字段从整数改为字符串。
  • 当在没有健康检查的情况下检查容器时,容器的 podman inspect 命令现在对健康检查返回 nil 。
  • 不再可以创建新的 BoltDB 数据库。尝试这样做会导致一个错误。所有新的 Podman 安装现在都使用 SQLite 数据库后端。现有的 BoltDB 数据库仍然可用。
  • 对 CNI 网络的支持由构建标签控制,且默认不启用。
  • Podman 现在在 cgroup v1 系统上使用时打印警告。对 cgroup v1 的支持已弃用,并将在以后的发行版本中删除。您可以设置 PODMAN_IGNORE_CGROUPSV1_WARNING 环境变量来压制警告。
  • 现在,通过 Docker 兼容的 API 发送的网络统计信息是按每个接口的,而不是聚合的,这提高了 Docker 兼容性。
  • 无根网络的默认工具已从 slirp4netns 改为 pasta,以提高性能。因此,名为 pasta 的网络不再被支持。
  • 将多个过滤器与 List Images REST API 一起使用现在将使用 AND 而不是 OR 来组合过滤器,改进了 Docker 兼容性。
  • 对接受数组的多个 Podman CLI 选项的解析已更改为不再接受字符串分隔的列表,而是需要多次传递的选项。这些选项是:

    • podman manifest annotatepodman manifest add--annotation 选项
    • podman kube play 的-- --configmap ,--log-opt--annotation 选项
  • podman image trust set--pubkeysfile 选项

    • podman createpodman runpodman pushpodman pull--encryption-key--decryption-key 选项
    • podman exec--env-file 选项, podman createpodman run--bkio-weight-device , --device-read-bps , --device-write-bps , --device-read-iops , --device-write-iops , --device , --label-file , --chrootdirs , --log-opt , --env-file 选项
    • --hooks-dir--module 全局选项
  • podman system reset 命令不再等待运行的容器停止,而是立即发送 SIGKILL 信号。
  • podman network inspect 命令现在包含在其输出中使用网络的正在运行的容器。
  • 现在,除了 AMD 和 Intel 64 位构架(x86-64-v2)以及 64 位 ARM 架构(ARMv8.0-A)外,在其它架构上也支持 podman compose 命令。
  • podman kube playpodman kube generate 命令的 -no-trunc 选项已弃用。Podman 现在遵循 Kubernetes 的注解大小的规范,这删除了对此选项的需要。
  • 来自 podman system connection 命令的连接和来自 podman farm 命令的场现在被写入一个名为 podman-connections.conf 文件的新配置文件。因此,Podman 不再写入 containers.conf 文件。Podman 仍然尊重 containers.conf 中的现有连接。
  • 大多数 podman farm 子命令不再需要连接到场中的机器才能运行。
  • 当容器镜像没有定义入口点时,podman createpodman run 命令不再需要在命令行中指定入口点。在这种情况下,一个空命令被传递给 OCI 运行时,产生的行为是特定于运行时的。
  • 添加了一个新的 API 端点 /libpod/images/$name/resolve,以将潜在的短名称解析为可用来拉取镜像的完全限定镜像引用 Podman 的列表。

有关显著变化的更多信息,请参阅 上游发行注记

Jira:RHEL-32714

为 Podman 和 Buildah 提供了 --compat-volumes 选项

您可以将新的 -compat-volumes 选项与 buildah buildpodman buildpodman farm build 命令一起使用。此选项触发了对使用 VOLUME 指令标记的目录内容的特殊处理,以便其内容随后只能被 ADDCOPY 指令修改。在这些位置通过 RUN 指令所做的任何更改将被丢弃。在以前的版本中,此行为是默认的,但现在默认被禁用。

Jira:RHEL-52239

一个新的 rhel10-beta/rteval 容器镜像

现在,Red Hat Container Registry 中提供实时 registry.redhat.io/rhel10-beta/rteval 容器镜像,以便对独立的 RHEL 安装运行延迟分析。使用 rhel10-beta/rteval 容器镜像,您可以在容器化设置中执行延迟测试,以确定此类解决方案是否适用于您的实时工作负载,或者将结果与 rteval 的裸机运行进行比较。要使用此功能,请订阅带有实时支持的 RHEL。不提供调优指南。

Jira:RHELDOCS-18522[1]

containers.conf 文件现在是只读的

现在,存储在 containers.conf 文件中的系统连接和场信息是只读的。系统连接和场信息现在将被存储在 podman.connections.json 文件中,仅由 Podman 管理。Podman 继续支持旧的配置选项,如 [engine.service_destinations][farms] 部分。但是,如果需要,您仍然可以手动添加连接或场,但无法使用 podman system connection rm 命令从 containers.conf 文件中删除连接。

如果需要,您仍然可以手工编辑 containers.conf 文件。Podman v4.0 添加的系统连接在升级到 Podman v5.0 后保持不变。

Jira:RHEL-40637

macvlanipvlan 网络接口名称可在 containers.conf 中进行配置

要指定 macvlanipvlan 网络,您可以使用 containers.conf 配置文件中的新的 interface_name 字段来调整容器中创建的网络接口的名称。

Jira:RHELDOCS-18769[1]

bootc-image-builder 现在支持定义自定义 Kickstart 文件并将其注入 ISO 构建

有了这个增强,您可以通过设置用户、自定义分区、注入密钥,并将 kickstart 文件注入 ISO 构建来配置安装过程来定义 Kickstart。生成的磁盘镜像会创建一个自包含安装程序,可在其他设备之间自动化和部署设备、断开连接的系统、边缘设备。因此,使用 bootc-image-builder 创建自定义介质更为简单。

Jira:RHELDOCS-18734[1]

支持使用 bootc-image-builder构建 GCP 镜像

通过使用 bootc-image-builder 工具,您现在可以生成 .gce 磁盘镜像,并在 Google Compute Engine (GCE)平台上置备实例。

Jira:RHELDOCS-18472[1]

支持使用 bootc-image-builder创建和部署 VMDK

在这个版本中,您可以使用 bootc-image-builder 工具从 bootc 镜像创建虚拟机磁盘(VMDK),并将 VMDK 镜像部署到 VMware vSphere。

Jira:RHELDOCS-18398[1]

podman pod inspect 命令现在提供一个 JSON 数组,而不考虑 pod 的数量

在以前的版本中,在检查单个 pod 时,podman pod inspect 命令会忽略 JSON 数组。有了此更新,podman pod inspect 命令现在在输出中生成一个 JSON 数组,而不考虑检查的 pod 的数量。

Jira:RHELDOCS-18770[1]

composefs 文件系统现在可用

composefs 只读文件系统现在被完全支持。这通常旨在被当前的 bootc/ostree 和 podman 项目使用。使用 composefs 时,您可以使用这些项目创建和使用只读镜像,在镜像间共享文件数据,并在运行时验证镜像。因此,您挂载了一个经过完全验证的文件系统树,具有对相同文件的机会细粒度共享。

Jira:RHEL-18157[1]

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.