3.20. 容器
Podman 支持推送和拉取使用 zstd:chunked
压缩的镜像
您可以推送使用 zstd:chunked
格式压缩的镜像,以减少镜像大小,并使用部分拉取。
Container Tools 软件包已更新
现在提供了更新的 Container Tools RPM meta-package,其包括 Podman、Buildah、Skopeo、crun
和 runc
工具。Buildah 已更新至版本 1.39.0,Skopeo 已更新至版本 1.18.0。Podman v5.4 包含以下值得注意的 bug 修复和增强:
-
podman update
命令现在支持与健康检查相关的各种选项:--health-cmd
定义一个新的健康检查和--no-healthcheck
,以禁用现有的健康检查。这些选项可以更轻松地在运行的容器中添加、修改或禁用健康检查。如需更多信息,请参阅podman-update (5)
手册页。 -
podman run
、podman create
和podman volume create
命令的--mount type=volume
选项现在支持一个新选项subpath=
,以便卷的子集仅在容器中可见。 -
podman run
、podman create
和podman pod create
命令的--userns=keep-id
选项现在支持一个新选项--userns=keep-id:size=
,来配置用户命名空间的大小。 -
podman kube play
命令现在支持容器设备接口(CDI)设备。 -
podman run
、podman create
和podman pod create
命令现在支持一个新选项--hosts-file
,来定义用于容器中/etc/hosts
的基本文件。 -
podman run
、podman create
和podman pod create
命令现在支持一个新选项--no-hostname
,其禁止在容器中创建/etc/hostname
。 -
podman network create
命令现在支持一个用于网桥网络的新选项--opt mode=unmanaged
,其允许 Podman 使用系统上现有的网桥,而无需任何更改。 -
podman run
、podman create
和podman pod create
的--network
选项现在接受网桥网络的一个新选项host_interface_name
,其指定容器外创建的网络接口的名称。 -
podman manifest rm
命令现在支持一个新选项--ignore
,以便在删除不存在的清单时成功执行。 -
podman system prune
命令现在支持一个新选项--build
,来删除过早终止的构建中剩余的构建容器。 - Podman 现在将容器主机名传递给 Netavark,它将它们用于容器的任何 DHCP 请求。
-
在从 Makefile 构建 podman 时,打包程序现在可以设置
BUILD_ORIGIN
环境变量。这提供了有关谁构建 Podman 二进制文件的信息,此信息显示在podman version
和podman info
命令中。包含这些信息可以通过帮助维护人员识别构建和安装的源和方法,来协助 bug 报告。 -
podman kube generate
和podman kube play
命令现在可以创建并运行 Kubernetes Job YAML。 -
podman kube generate
命令现在包含有关生成的 YAML 中 pod 和容器的用户命名空间的信息。podman kube play
命令使用此信息在创建基于 YAML 的新 pod 时复制用户命名空间配置。 -
podman kube play
命令现在支持 Kubernetes 卷类型的镜像。 -
Quadlet 生成的
systemd
单元的服务名称现在可以使用所有支持的 Quadlet 文件中的ServiceName
键设置。 -
Quadlets 现在可以使用所有 Quadlet 文件支持的新键
DefaultDependencies
来禁用其对network-online.target
的隐式依赖。 -
Quadlet
.container
和.pod
文件现在支持一个新键AddHost
,来将主机添加到容器或 pod 中。 -
Quadlet
.container
和.pod
文件中的PublishPort
键现在可以接受其值中的变量。 -
Quadlet
.container
文件现在支持两个新键CgroupsMode
和StartWithPod
,来为容器配置控制组,以及容器是否将通过是其一部分的 pod 启动。 -
Quadlet
.container
文件现在可以通过指定要在网络键内共享的容器的.container
文件来使用另一个容器的网络。 -
Quadlet
.container
文件现在可以使用Mount=type=image
键和.image
目标,将.image
文件管理的镜像挂载到容器中。 -
Quadlet
.pod
文件现在支持六个新键,DNS
、DNSOption
、DNSSearch
、IP
、IP6
和UserNS
,以配置 pod 的DNS
、静态 IP 和用户命名空间设置。 -
Quadlet
.image
文件现在可以通过多次指定ImageTag
键来多次提供镜像。 -
Quadlets 现在可以放在
/run/containers/systemd
目录和现有目录中,如$HOME/containers/systemd
和/etc/containers/systemd/users
。 - Quadlet 现在可以正确地处理是符号链接的单元目录的子目录。
-
podman manifest inspect
命令现在在其输出中包含清单的注解。 -
podman create
、podman run
和podman pod create
的--add-host
选项现在支持指定多个分号分隔的主机名(如podman run --add-host test1;test2:192.168.1.1
)。 -
podman run
和podman create
命令现在支持三个新选项来配置健康检查日志记录:--health-log-destination
(指定日志存储的位置)、--health-max-log-count
(指定日志存储多少个健康检查)和--health-max-log-size
(指定健康检查日志的最大大小)。
有关值得注意的变化的更多信息,请参阅 上游发行注记。
现在,Podman 中提供了增强的健康检查输出配置
Podman 现在基于每个容器为健康检查输出提供增强的配置性。在此次更新之前,健康检查输出仅限于五个最新的执行,每个执行的上限为 500 个字符,只能通过 podman inspect
命令访问。现在,您可以调整为每个容器存储的健康检查输出量,以便在需要时获得更全面的调试信息。此功能在不影响运行的服务的情况下诊断间歇性健康检查失败特别有用。另外,要解决敏感数据和存储效率的顾虑,您可以选择限制或禁用特定容器的健康检查输出存储。
详情请查看 podman-update
手册页。
Jira:RHEL-60561[1]
现在可以使用单个命令部署容器镜像
您可以使用单个命令将容器镜像部署到 RHEL 云实例中。system-reinstall-bootc
命令安装执行以下操作:
- 拉取提供的镜像,以设置 SSH 密钥或访问系统。
-
使用所有绑定挂载和配置的 SSH 密钥运行
bootc install to-existing-root
命令。
Jira:RHELDOCS-19516[1]
现在支持从头开始创建自定义 bootc
镜像
您可以从头开始创建 bootc
镜像,并完全控制镜像的内容,定制系统环境以满足特定要求。使用 bootc-base-imgectl
命令,您可以根据现有的 bootc
基础镜像创建自定义 bootc
镜像。Bootc Image from Scratch 是从容器镜像派生的,不会自动接收来自默认基础镜像的更新。要包含这些更新,您必须将它们手动合并为容器管道的一部分。另外,您可以在任何 bootc 容器镜像上使用 bootc-base-imgectl
中的 rechunk
子命令来根据需要优化或重组镜像。
Jira:RHELDOCS-19825[1]
提供了用于 bootc-image-builder
的新镜像构建进度条
在以前的版本中,您无法通过查看日志来检查镜像构建的进度。有了此增强,您可以使用 bootc-image-builder
检查您创建的镜像构建的进度。您可以在构建镜像时使用 --progress=verbose
参数恢复回之前的行为。
Jira:RHELDOCS-20170[1]