报错
ERRO[0000] running /usr/bin/newuidmap 2711552 0 1000 1 1 100000 65536 65537 100000 65537
: newuidmap: write to uid_map failed: Invalid argument
Error: cannot set up namespace using "/usr/bin/newuidmap": should have setuid or have filecaps setuid: exit status 1
用户uid/gid未设置
ERRO[0000] cannot find UID/GID for user n: no subuid ranges found for user "n" in /etc/subuid - check rootless mode in man pages.
WARN[0000] Using rootless single mapping into the namespace. This might break some images. Check /etc/subuid and /etc/subgid for adding sub*ids if not using a network user
解决:缺少USER_NAME:100000:65536
一行。
解决方法
/etc/subuid
和 /etc/subgid
都应该有:
root:1000:1
root:100000:65536
USER_NAME:100000:65536
其中USER_NAME
可以通过运行whoami
来查看。
来源: https://github.com/lxc/incus/issues/458#issuecomment-1919235312
解释
root:1000:1
:将用户命名空间中的 UID 0 映射到主机上的 UID 1000。root:100000:65536
:将用户命名空间中的 UID 1 到 65536 映射到主机上的 UID 100000 到 165535。USER_NAME:100000:65536
:将用户 USER_NAME 的子 UID 映射从 100000 开始,连续映射 65536 个 UID。
subuid解释
查看主机已有uid/gid
cat /etc/passwd
cat /etc/group
一般来说,root的uid/gid=0,第一个user的uid/gid=1000
1000
在许多 Linux 发行版中,普通用户的 UID 通常从 1000 开始。因此,root:1000:1 表示将用户命名空间中的 UID 0 映射到主机上的 UID 1000,这通常是第一个普通用户的 UID。
这种映射可以用于特定的场景,例如将容器内的 root 用户映射到主机上的一个普通用户,以提高安全性。
100000
100000 是一个较大的数字,通常不会与系统中已有的 UID 冲突。选择这个值作为子 UID 映射的起始值,可以确保映射范围内的 UID 不会与系统中的其他 UID 重叠。
root:100000:65536 表示为 root 用户分配从 100000 开始的 65536 个子 UID。这种大范围的映射通常用于容器或用户命名空间,以确保有足够的 UID 可供使用。