第 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
$ sudo dnf install container-tools
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
改进了控制组群性能
以前的控制组群版本 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"
unqualified-search-registries=["registry.fedoraproject.org", "quay.io"]
[aliases]
"fedora"="registry.fedoraproject.org/fedora"
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"
unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "permissive"
对于 RHEL 9,unqualified-search-registries
是:
unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"] short-name-mode = "enforcing"
unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
short-name-mode = "enforcing"
默认 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 checkpoint
和 podman 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
。