第 6 章 容器


下面的章节包含对 RHEL 8 和 RHEL 9 之间容器的最显著的更改。

6.1. 容器的显著变化

container-tools meta-package 现已正式发布

RHEL 9 提供了 container-tools RPM meta-package 包括 Podman、Buildah、Skopeo、CRIU、Udica 和所有必需库。RHEL 9 不提供 stable 流。要获得对 Podman 的稳定访问、Buildah、Skopeo 等,请使用 RHEL EUS 订阅。

安装 container-tools meta-package:

  • 安装 container-tools meta-package:

    $ sudo dnf install container-tools
    Copy to Clipboard Toggle word wrap

改进了控制组群性能

以前的控制组群版本 cgroup 版本 1(cgroup v1)会导致各种应用程序出现性能问题。最新版本的控制组 cgroup 版本 2(cgroup v2)可让系统管理员为任何应用程序限制资源,而不会造成性能问题。

在 RHEL 9 中,控制组群c v2 的新版本是默认启用的。

Podman 现在支持安全简短名称

现在可以在 [aliases] 表中的 registries.conf 文件中配置镜像的短名称别名。简短名称模式为:

  • Enforcing:如果在镜像拉取过程中找不到匹配的别名,则 Podman 会提示用户选择一个非限定 registry。如果成功拉取了所选镜像,Podman 会自动在 $HOME/.cache/containers/short-name-aliases.conf 文件(rootless 用户)和 /var/cache/containers/short-name-aliases.conf 中记录一个新的短名称别名。如果无法提示用户(例如,stdin 或 stdout 而不是 TTY),则 Podman 会失败。请注意,如果两者都指定了相同的别名,则short-name-aliases.conf文件优先于 registries.conf 文件。在 RHEL 9 中,enforcing 模式是默认的。
  • Permissive:与 enforcing 模式类似,但如果用户无法提示,Podman 不会失败。相反,Podman 会按照指定顺序搜索所有非限定 registry。请注意,没有记录别名。RHEL 8 中是 permissive 模式。

Example:

unqualified-search-registries=["registry.fedoraproject.org", "quay.io"]
[aliases]
"fedora"="registry.fedoraproject.org/fedora"
Copy to Clipboard Toggle word wrap

registries.conf中的默认容器 registry

您可以以 root 用户身份在 /etc/containers/registries.conf 文件中找到容器 registry 列表,并以一个非 root 用户身份在 $HOME/.config/containers/registries.conf 中。通过更改 registry.conf 文件,您可以更改默认的系统范围搜索设置。

对于 RHEL 8,unqualified-search-registries 是:

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "permissive"
Copy to Clipboard Toggle word wrap

对于 RHEL 9,unqualified-search-registries 是:

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "enforcing"
Copy to Clipboard Toggle word wrap

默认 OCI 运行时更改

crun OCI 运行时现在可用于 container-tools:rhel8 模块。crun 容器运行时支持使容器能够访问无根用户的额外组的注解。当设置了 setgid 或用户只能访问组访问权限的目录中时,这对于容器操作很有用。

  • RHEL 8 中的默认容器运行时是 runc
  • RHEL 9 中的默认容器运行时是 crun

不支持在 RHEL 7 主机上运行 RHEL 9 容器

不支持在 RHEL 7 主机上运行 RHEL 9 容器。

如需更多信息,请参阅 Red Hat Enterprise Linux Container Compatibility Matrix

默认网络堆栈

Podman 使用 CNI 作为 RHEL 8 中的默认网络堆栈,Netavark 作为 RHEL 9 的新安装中的默认网络堆栈。

如果您执行从 RHEL 8 原位升级到 RHEL 9,则 Podman 的网络堆栈设置为:

  • Netavark 如果 /etc/containers/containers.conf 文件中的 network_backend 参数没有被设置,或者,在 RHEL 8 中手动将 Podman 的网络堆栈升级到 Netavark。
  • CNI 如果升级后首次运行时显示的容器、镜像、Pod 或网络。然后您可以手动升级到新的 Netavark 网络堆栈。有关如何在 CNI 和 Netavark 网络堆栈间切换的步骤,请参阅 8.6 将网络堆栈从 CNI 切换到 Netavark 和 8.7 将网络堆栈从 Netavark 切换到 CNI。

红帽建议明确指定 network_backend 参数,以确保选择了正确的后端。

警告

您不能使用 podman container checkpointpodman container restore 命令将现有容器迁移到不同的网络堆栈系统。如果要从 CNI 网络堆栈切换到 Netavark 网络堆栈,请从容器镜像重新创建容器。

Podman v5.0 弃用

在 RHEL 9.5 中,以下在 Podman v5.0 中已弃用:

  • 存储在 containers.conf 文件中的系统连接和场信息现在是只读的。系统连接和场信息现在将被存储在 podman.connections.json 文件中,仅由 Podman 管理。Podman 继续支持旧的配置选项,如 [engine.service_destinations][farms] 部分。如果需要,您仍然可以手动添加连接或场,但无法使用 podman system connection rm 命令从 containers.conf 文件中删除连接。
  • slirp4netns 网络模式已被弃用,并将在以后的 RHEL 主发行版本中删除。pasta 网络模式是无根容器的默认网络模式。
  • 无根容器的 cgroup v1 已被弃用,并将在以后的 RHEL 主发行版本中删除。

runc 容器运行时已弃用

runc 容器运行时已弃用,并将在以后的 RHEL 主发行版本中删除。默认容器运行时是 crun

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat