2014-10-30 19 views
12

我使用泊塢窗設置Selenium服務器,基本上遵循this github上的教程。泊塢過程表明了對主機進程列表

我沒有問題,建立服務器,但我注意到,我開始泊塢窗內圖像的過程實際上得到顯示我的主機進程列表中。

enter image description here

正如你在截圖中看到,碼頭工人跑了bash腳本,並執行一個jar文件,我以爲箱內只應該發生。這是否意味着來自主機的用戶可能會在容器外殺死某個特定的進程,這將徹底搞亂這個盒子裏的世界?

當我停止在該容器中,所有的流程走了我的預期。

這是Docker設計的方式..和有缺陷的隔離是你必須接受的輕量級與Virtualbox/Vagrant比較...... 或我做錯了什麼?

謝謝!

+0

那麼如果你是爲引導你http://12factor.net/沒有與外部資源的問題。但我不清楚你關於某個外部進程的問題......在Docker容器內部,所有的都是孤立的,只有當你殺掉容器時服務停止運行。 – kikicarbonell 2014-10-30 17:54:53

+0

就是這樣。不知道我會形容它是「有缺陷的」。 – user2105103 2014-10-30 18:05:46

回答

19

是的,這是因爲預期。注意進程是由root啓動的,所以具有root權限的用戶可以終止它們,但是具有root權限的用戶可以做得比這更差(例如,卸載docker o_O)...

這種「有缺陷」的隔離實際上有一些很大的好處,喜歡monitor所有的容器從主機上運行的單個監視器進程中運行的進程的能力。

25

這似乎是對碼頭工人正在輕量級虛擬機」這就是爲什麼有些人可能會想到類似的行爲,VirtualBox或VMWare的,但只是速度更快。

碼頭工人不使用虛擬化,因此所有的進程中運行一個常見的誤解通過本地主機內核相互隔離,非root用戶無法終止容器內的進程,但是root可以停止整個容器,不僅可以終止進程,還可以運行top然後按shift+f並選擇nsPID和n sUSER如附圖所示。

然後你會看到旁邊的每個處理的命名空間,如果它是在服務器上直接運行這個數值極有可能會是空的,如果過程中容器中運行,你會看到的命名空間ID爲每個容器。 (您可以通過命名空間排序,看看在每個容器進程)

top nsPID and nsUSER

相關問題