docker容器中的特权模式与非用户名空间
从我所知道的,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`
所以,我们看到差异。 以禁用的用户名空间运行的进程以root身份运行。 但为什么:
docker run -it ubuntu bash
<Try to mount, for example /dev/sda
。 < – 这是不可能的,因为该容器不会看到/ 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/
输出所有,为什么?