当我们执行docker run ubuntu:14.04 ps ax时,ps ax命令在哪里运行?

时间:2016-12-16 00:14:30

标签: docker

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

1 个答案:

答案 0 :(得分: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只能看到其中运行的其他进程同一个容器。