当我跑步时podman run
,我遇到了一个特别奇怪的错误,
❯ podman run -ti --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest
✔ docker.io/rancher/rancher:latest
Trying to pull docker.io/rancher/rancher:latest...
Getting image source signatures
[... blob copying...]
Writing manifest to image destination
Storing signatures
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument
Error: Error committing the finished image: error adding layer with blob "sha256:b4b03dbaa949daab471f94bcfd68cbe21c1147e8ec2acfe3f46f1520db48baeb": Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument
“用户命名空间中可用的 UID 或 GID 可能不足”是什么意思,我该如何解决这个问题?
已经接受的答案让我去寻找一个可以为所有 podman 调用产生相同结果的全局设置。这对我来说非常重要,因为 podman 是由我不拥有的另一个脚本调用的。
中有一个对应的标志(
ignore_chown_errors
)/etc/containers/storage.conf
,在我的系统中被注释掉了,所以我在文件中添加了以下行:通过该更改,系统中的所有 podman 调用都开始正常工作,而无需
--storage-opt ignore_chown_errors=true
为每个调用添加标志。PS:我对文件系统没有问题,所以我没有尝试更改该
mount_program
配置文件中的设置,但我认为它在所有调用中都会产生相同的全局效果。为了解决这个问题,我不得不运行
--storage-opt ignore_chown_errors=true
这个忽略 chmod 错误并强制你的容器只支持一个用户。您可以在“为什么无根 Podman 无法拉取我的图像?”中了解这一点。. 请注意,这是一个选项podman
,而不是podman run
。因此使用它看起来像这样,在我的情况下,因为我没有内核 overlayfs 驱动程序,所以我需要使用 FUSE 版本(与 一起安装
sudo apt install fuse-overlayfs
),