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/ubi8/podman \ podman run ubi8 echo hello
-
根据
registry.access.redhat.com/ubi8/podman
镜像,运行名为unprivileged_podman
的外部容器。 -
--security-opt label=disable
选项禁用主机 Podman 上的 SELinux 隔离。SELinux 不允许容器化进程挂载在容器内运行所需的所有文件系统。 -
--user podman
选项会自动使外部容器内的 Podman 在用户命名空间内运行。 -
--device /dev/fuse
选项使用容器中的fuse-overlayfs
软件包。此选项将/dev/fuse
添加到外部容器中,因此容器中的 Podman 可以使用它。 -
运行
podman run ubi8 echo hello
命令,来创建基于ubi8
镜像的内部容器。 -
请注意,ubi8 短镜像名称被解析为别名。因此,拉取
registry.access.redhat.com/ubi8:latest
镜像。
验证
列出所有容器:
$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a47b26290f43 podman run ubi8 e... 30 seconds ago Exited (0) 13 seconds ago unprivileged_podman