1.6. 设置 rootless 容器

以超级用户特权(root 用户)的用户身份运行容器工具(如 Podman、Skopeo 或 Buildah)是确保容器对系统上任何可用功能具有全部权限的最佳方法。但是,从 Red Hat Enterprise Linux 8.1开始,提供名为"Rootless Containers"的功能,您可以以普通用户身份使用容器。

虽然容器引擎(如 Docker)可让您以普通(非 root)用户身份运行 Docker 命令,但执行这些请求的 Docker 守护进程还是以 root 用户身份运行。因此,普通用户可以通过其容器发出可能会损害系统的请求。通过设置 rootless 容器用户,系统管理员可以防止常规用户所做的潜在的损坏容器的活动,同时仍然允许这些用户在其自己的帐户下安全地运行大多数容器功能。

这个流程描述了如何设置您的系统,以非 root 用户(rootless)身份使用 Podman、Skopeo 和 Buildah 工具来与容器打交道。它还描述了您将遇到的一些限制,因为普通用户帐户对容器运行可能所需的所有操作系统功能没有全部的权限。

先决条件

  • 您需要成为 root 用户来设置 RHEL 系统,以允许非 root 用户帐户使用容器工具。

流程

  1. 安装 RHEL。
  2. 安装 podman 软件包:

    # dnf install podman -y
  3. 创建新的用户帐户:

    # useradd -c "Joe Jones" joe
    # passwd joe
    • 用户会自动配置为能够使用 rootless Podman。
    • useradd 命令会在 /etc/subuid/etc/subgid 文件中自动设置可访问用户和组 ID 的范围。
    • 如果您手动更改 /etc/subuid/etc/subgid,则必须运行 podman system migrate 命令,以允许应用新的更改。
  4. 连接到用户:

    $ ssh joe@server.example.com
    注意

    不要使用 susu - 命令,因为这些命令不会设置正确的环境变量。

  5. 拉取 registry.access.redhat.com/ubi9/ubi 容器镜像:

    $ podman pull registry.access.redhat.com/ubi9/ubi
  6. 运行名为 myubi 的容器,并显示 OS 版本:

    $ podman run --rm --name=myubi registry.access.redhat.com/ubi9/ubi \
      cat /etc/os-release
    NAME="Red Hat Enterprise Linux"
    VERSION="9 (Plow)"

其他资源