4.17. 容器
Podman 现在支持 containers.conf 模块
您可以使用 Podman 模块来加载预定的一组配置。Podman 模块是 Tom 的 Obvious Minimal Language (TOML)格式的 containers.conf
文件。
这些模块位于以下目录或其子目录中:
-
对于无根用户:
$HOME/.config/containers/containers.conf.modules
-
对于 root 用户:
/etc/containers/containers.conf.modules
,或/usr/share/containers/containers.conf.modules
您可以使用 podman --module <your_module_name
> 命令按需加载模块,以覆盖系统和用户配置文件。使用模块涉及以下事实:
-
您可以使用
--module
选项多次指定模块。 -
如果
<your_module_name
> 是绝对路径,则配置文件将直接加载。 - 相对路径相对于前面提到的三个模块目录解析。
-
$HOME
中的模块覆盖/etc/
和/usr/share/
目录中的模块。
如需更多信息,请参阅 上游文档。
Jira:RHELPLAN-167829[1]
Container Tools 软件包已更新
更新的 Container Tools RPM 元软件包现已正式发布,其包括 Podman、Buildah、Skopeo、crun 和 runc 工具,现在可用。与之前版本相比,重要的程序错误修复和增强包括:
Podman v4.9 中的显著变化:
-
现在,您可以使用
podman --module <your_module_name
> 命令来按需加载模块,并覆盖系统和用户配置文件。 -
添加了一个新的
podman farm
命令,其中包含一组create
,set
,remove
, 和update
子命令。使用这些命令,您可以将构建到为不同架构运行 podman 的机器。 -
添加了一个新的
podman-compose
命令,它使用 Docker compose 等外部 compose 提供者运行组合工作负载。 -
podman build
命令现在支持--layer-label
和--cw
选项。 -
podman generate systemd
命令已弃用。使用 Quadlet 在systemd
下运行容器和 pod。 -
podman build
命令现在支持带有 HereDoc 语法的Containerfiles
。 -
podman machine init
和podman machine set
命令现在支持一个新的--usb
选项。使用这个选项允许 QEMU 提供商的 USB 透传。 -
podman kube play
命令现在支持新的--publish-all
选项。使用此选项公开主机上的所有 containerPorts。
有关显著变化的更多信息,请参阅 上游发行注记。
Jira:RHELPLAN-167796[1]
Podman v4.9 RESTful API 现在显示进度数据
在这个版本中,Podman v4.9 RESTful API 现在会在拉取镜像或将镜像推送到 registry 时显示进度数据。
Jira:RHELPLAN-167823[1]
SQLite 现在作为 Podman 的默认数据库后端被完全支持
在 Podman v4.9 中,Podman 的 SQLite 数据库后端(以前作为技术预览提供)现已获得全面支持。SQLite 数据库在使用容器元数据时提供更高的稳定性、性能和一致性。SQLite 数据库后端是 RHEL 9.4 的新安装的默认后端。如果您从以前的 RHEL 版本升级,则默认后端为 BoltDB。
如果您使用 containers.conf
文件中的 database_backend
选项显式配置了数据库后端,则 Podman 将继续使用指定的后端。
Jira:RHELPLAN-168180[1]
Containerfile
现在支持多行说明
您可以使用 Containerfile
文件中的多行 HereDoc 指令(Here Document 表示法)来简化此文件,并减少执行多个 RUN
指令导致的镜像层数。
例如,原始 Containerfile
可以包含以下 RUN
指令:
RUN dnf update RUN dnf -y install golang RUN dnf -y install java
您可以使用 HereDoc 表示法,而不是多个 RUN 指令:
RUN <<EOF dnf update dnf -y install golang dnf -y install java EOF
Jira:RHELPLAN-168185[1]
Podman 现在支持从主机分配 USB 设备到 QEMU 虚拟机
使用 podman machine
命令,您现在可以通过 USB 透传将主机中的 USB 设备分配给 QEMU 虚拟机(VM)。
在将 USB 设备连接到计算机之前,USB 设备需要属于您的用户组。如果多个 USB 设备具有相同的供应商和产品 ID,则会分配第一个可用的设备。请注意,这个功能只支持基于 QEMU 技术的虚拟机。
要将 USB 设备从主机分配给 QEMU 虚拟机,请运行:
$ podman machine init --usb vendor=13d3,product=5406
要使用总线和设备号从主机分配 USB 设备到 QEMU 虚拟机,请运行:
$ podman machine init --usb bus=1,devnum=3
请注意,如果您使用总线和设备号指定 USB 设备,则这些值每次重新引导时可能会更改。
Jira:RHELPLAN-168183[1]
gvisor-tap-vsock
软件包现在可用
gvisor-tap-vsock
软件包是 libslirp
用户模式网络库和 VPNKit 工具和服务的替代选择。它使用 Go 编写,基于 gVisor 的网络堆栈。与 libslirp
相比,gvisor-tap-vsock
库支持可配置的 DNS 服务器和动态端口转发。您可以将 gvisor-tap-vsock
网络库用于 podman-machine 虚拟机。目前,Red Hat Enterprise Linux 不支持用于管理虚拟机的 podman machine
命令。
Jira:RHELPLAN-167396[1]