2016-12-16 72 views
0

我是码头工人新手,一直在阅读文档,并且理解用户空间和内核空间的概念。所以当我们运行上面的命令即docker run ubutnu:14.04时,它会下载一个ubutnu映像(它没有内核),然后在容器中运行它,然后触发命令ps ax。我的问题是ps ax命令执行的地方?它是否在主机操作系统上执行(这是一个linux内核,因为docker在Linux上运行)还是在容器内部执行并显示在ubuntu用户空间中运行的所有进程?当我们执行docker run ubuntu:14.04 ps ax时,ps ax命令在哪里运行?

回答

0

ps命令的输出应该很清楚地回答这个问题。这里是运行在我的主机ps ax

$ ps ax 
    PID TTY  STAT TIME COMMAND 
    1 ?  Ss  0:10 /usr/lib/systemd/systemd --switched-root --system --deserialize 23 
    2 ?  S  0:00 [kthreadd] 
    3 ?  S  0:08 [ksoftirqd/0] 
    7 ?  S  2:20 [rcu_sched] 
    8 ?  S  0:00 [rcu_bh] 
    9 ?  S  1:31 [rcuos/0] 
    10 ?  S  0:00 [rcuob/0] 
    [...many lines later...] 
    20565 pts/3 R+  0:00 ps ax 

这里,它与docker run运行:

$ docker run ubuntu ps ax 
    PID TTY  STAT TIME COMMAND 
    1 ?  Rs+ 0:00 ps ax 

当您运行docker run ubuntu:14.04 ps ax,你正在运行的ps命令容器里面,ps会只能看到在同一容器内运行的其他进程。