运行容器:
[root@localhost ~]# tty
/dev/pts/3
[root@localhost ~]# docker run -it nginx /bin/bash
root@bee12031f933:/# sleep 20
root@bee12031f933:/#
参见:
[root@localhost ~]# tty
/dev/pts/2
[root@localhost ~]# w
17:43:24 up 19 days, 45 min, 5 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.22 16:24 1:01m 0.73s 0.00s sleep 20
root pts/1 192.168.1.22 11:31 1:02m 4.92s 4.65s docker run -it centos:7.7.1908
root pts/2 192.168.1.22 16:31 4.00s 0.70s 0.01s w
root pts/3 192.168.1.22 15:09 4.00s 0.25s 0.07s docker run -it nginx /bin/bash
root pts/4 192.168.1.22 16:41 44.00s 0.06s 0.06s -bash
示例图片:
在此处输入图像描述在此处输入图像描述
docker容器在pts/3中运行,在容器"sleep 20"中执行命令。然后,我在外部主机上执行命令"w",显示命令"sleep 20"在pts/0中执行,原因是什么?
为什么外部主机显示在容器中执行的命令?
docker类似于LXC的工作方式。它允许对进程进行沙盒处理,并控制它们的资源分配。
由于资源是"分离的",系统将根据其所知道的信息显示信息。
myuser@localhost: ~ $ tty
/dev/pts/1
myuser@localhost: ~ $ docker run --rm -it ubuntu:18.04 bash
root@36ed505961f4:/# tty
/dev/pts/0
有关详细信息,请查看内核命名空间。