2016-12-16 74 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會只能看到在同一容器內運行的其他進程。