18.8. 运行具有较少特权的 Podman

您可以运行两个嵌套的 Podman 容器,而无需使用 --privileged 选项。运行不带 --privileged 选项的容器是一个更安全的选择。

如果您要以尽可能安全的方式尝试不同版本的 Podman,这非常有用。

先决条件

  • container-tools 元数据包已安装。

流程

  • 运行两个嵌套的容器:

    $ podman run --name=unprivileged_podman --security-opt label=disable \
      --user podman --device /dev/fuse \
      registry.access.redhat.com/ubi9/podman \
      podman run ubi9 echo hello
  • 根据 registry.access.redhat.com/ubi9/podman 镜像,运行名为 unprivileged_podman 的外部容器。
  • --security-opt label=disable 选项禁用主机 Podman 上的 SELinux 隔离。SELinux 不允许容器化进程挂载在容器内运行所需的所有文件系统。
  • --user podman 选项会自动使外部容器内的 Podman 在用户命名空间内运行。
  • --device /dev/fuse 选项使用容器中的 fuse-overlayfs 软件包。此选项将 /dev/fuse 添加到外部容器中,因此容器中的 Podman 可以使用它。
  • 运行 podman run ubi9 echo hello 命令,以基于 ubi9 镜像创建内容器。
  • 请注意,ubi9 短镜像名称被解析为别名。因此,会拉取 registry.access.redhat.com/ubi9:latest 镜像。

验证

  • 列出所有容器:

    $ podman ps -a
    CONTAINER ID  IMAGE                            COMMAND               CREATED            STATUS                          PORTS   NAMES
    a47b26290f43               podman run ubi9 e...  30 seconds ago     Exited (0) 13 seconds ago               unprivileged_podman