《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》
当在 CentOS 或 RHEL 上使用非 root 用户运行 podman 操作 Image 的时候,可能会遇到 “there might not be enough IDs available in the namespace” 的问题而无法运行容器镜像。该问题是由于 rootless 用户使用的 uid 和 gid 范围不能和 root 的冲突,而且如果有多个 rootless 用户,每个 rootless 用户的也不能冲突。
以下以 podman 用户为例说明如何解决该问题。首先需要查看 user 和 group 使用的 uid 和 gid 最大值,例如 65534。
$ cat /etc/passwd|awk -F ':' '{print $3,$4}'|sort
$ cat /etc/group|awk -F ':' '{print $3}'|sort
可以将 podman 用户使用的 id 设置从 100000 开始(大于 65534),可用数量为 65536。
$ echo podman:100000:65536 >> /etc/subuid
$ echo podman:100000:65536 >> /etc/subgid
执行以下命令,确认配置生效后就可以正常操作 Image 了。
$ podman system migrate
$ podman unshare cat /proc/self/uid_map
0 1000 1
1 100000 65536
$ podman pull docker.io/openshift/hello-openshift
https://www.redhat.com/sysadmin/controlling-access-rootless-podman-users
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html-single/managing_containers/index#upgrade_to_rootless_containers