据我所知,docker默认不使用user namespaces
。因此,容器中的用户X(uid=1001)
是主机系统中的同一用户:X(uid=1001)
。
当我在docker中启用user namespace
支持时,我看到了不同的内容:
启用了usernamepsace:
$ docker run ubuntu sleep 1000
htop returns for `sleep` `uid=165536`
禁用了usernamepsace:
$ docker run ubuntu sleep 1000
htop returns for `sleep` `uid=0`
所以,我们看到了不同之处。禁用usernamespace运行的进程以root身份运行。 但是,为什么:
docker run -it ubuntu bash
<Try to mount, for example /dev/sda
。 &lt; - 这是不可能的,因为该容器没有看到/ dev / sda /
ls /dev/
的输出:
console core fd full fuse mqueue null ptmx pts random shm stderr stdin stdout tty urandom zero
为什么虽然bash
是根,但它看不到所有设备? 这是与主机根相同的根,因为没有usernamepsace。
当我以特权模式运行docker时ls /dev/
输出所有,为什么?