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