我开始在以下位置运行 Docker 20.10.14无根模式在 Linux Mint 20(基于 Ubuntu 20.04)上。我dockerd
为此创建了一个名为UID 127 (组为dockerd
GID 139)的用户,并将以下内容添加/etc/subuid
到/etc/subgid
dockerd:200000:65536
现在,在该用户运行的 Docker 容器内,dockerd
我在主机文件系统上创建一个文件(通过绑定安装的目录)。
- 如果我在容器中将其创建为 UID 1000,它将映射到主机上的用户 200999。
- 如果我
daemon
在容器中将其创建为 UID 1(用户),则它在主机上的 UID 为 200000。 - 如果我在容器中将其创建为 UID 0(用户
root
),则它在主机上的 UID 为 127。
因此,子 UID/子 GID 绑定似乎是“基于 1”的,并且不包括 UID 0。这是它应该如何工作的还是我做错了什么?难道我不应该能够将容器中的 root 用户映射到我在主机上选择的 UID 吗?如果是这样,我该怎么做?
从https://unix.stackexchange.com/a/397168/107961
dockremap:165536:65536
165536 是启动 UID 映射的系统 UID(容器中的 UID 0)
...这听起来像是映射中的第一个 UID应该映射到 UID 0,但这不是我所看到的。
nobody
另一个奇怪的事情是,主机上 UID 0 的文件所有者由容器中的UID 65534 ( ) 拥有。这应该发生吗?