【问题标题】:docker tty command execute displaydocker tty 命令执行显示
【发布时间】:2020-08-21 05:36:24
【问题描述】:

运行容器:

[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

示例图片:

enter image description here enter image description here

在 pts/3 中运行的 docker 容器,在容器“sleep 20”中执行命令。然后,我在外部主机上执行命令“w”,在pts/0执行显示命令“sleep 20”,这是什么原因?

为什么外部主机会显示在容器中执行的命令?

【问题讨论】:

    标签: linux docker centos


    【解决方案1】:

    docker 类似于 LXC 的工作方式。它允许将进程相互沙盒化,并控制它们的资源分配。

    由于资源是“分离的”,系统会根据所知道的信息来展示信息。

    myuser@localhost: ~ $ tty
    /dev/pts/1
    myuser@localhost: ~ $ docker run --rm -it ubuntu:18.04 bash
    root@36ed505961f4:/# tty
    /dev/pts/0
    

    查看Kernel Namespaces 了解更多信息。

    【讨论】:

    • 在外部主机上执行命令“w”将显示容器中的命令。为什么?
    • 我没有这种行为,我在ubuntu和suse机器上都试过这个命令
    • 无论如何你可以在执行ps auxwww 时看到命令,原因是 docker 容器被沙盒化,而主机仍然可以看到所有内容(如果你使用正确的用户,则终止进程) . Docker 不是 VM 解决方案。
    • 我建议检查一下如何使用内核命名空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多