摘要:最近看了這篇文章,了解到容器內的一個進程對應于宿主機器上的一個進程。在宿主機器上的進程擁有者和在容器內的進程擁有者都是,同理,我們已經驗證了第二點。
最近看了這篇文章:Understanding how uid and gid work in Docker containers,了解到:
docker容器內的一個進程對應于宿主機器上的一個進程。
容器內的進程,與相對應的宿主進程,由相同的uid、gid擁有。也就是說,如果在容器內主進程屬于用戶uid=1000,那么這個容器進程在宿主機器上也屬于用戶uid=1000。容器內的用戶uid=1000就是容器外的用戶uid=1000,也是其他容器內的用戶uid=1000。上面鏈接的文章介紹了很多這樣的例子。
讓我們來驗證這兩點。
docker容器內的一個進程對應于宿主機器上的一個進程在我的Ubuntu上沒有安裝、更沒有運行mysql,但是我通過docker啟動了一個mysql容器。此時,我能夠通過在宿主機器上的命令行ps aux | grep mysql看到mysql的進程:
我們能在宿主機器上看到mysqld創建的進程,驗證了第一點。
現在我們驗證一下【在宿主機器上的進程擁有者uid、gid】是不是等于【在容器內的進程擁有者uid、gid】。
在宿主機器上的進程擁有者uid、gid在上面的ps aux | grep mysql輸出中,顯示進程ID是25138,【容器進程擁有者的用戶名】是guest-v+,看不到uid。并且,我們無法通過id guest-v+查看用戶信息,因為這個用戶名是虛擬的。
在搜索一番以后,我發現ps命令非常強大,幾乎能給你所有需要的進程信息!設置幾個參數就能讓它輸出我們想要的進程信息:
ps --pid 25138 -O uid,uname,gid,group,ppid
上面的參數表示,我要查看pid為25138的進程,并且除了默認的列以外,多展示幾列:uid,uname,gid,group,ppid。
輸出如下:
終于找到了!【在宿主機器上的進程擁有者uid】是999,groupid也是999。(PPID(parent pid)展示了父進程的pid,有了它,你可以繼續查看父進程的信息)
在ps manuals中,能找到這個命令的更多用法、更多可以展示的列:在容器內的進程擁有者uid、gid
接下來,讓我們查看【在容器內的進程擁有者uid】。
通過docker exec -it 容器名稱 bash,在容器內運行一個bash。
根據我之前的博客,執行apt-get update && apt-get install procps,在容器內安裝ps(大部分容器為了精簡,沒有預裝ps)。
使用ps ax -O uid,uname,gid,group,ppid,查看容器內的所有進程:
可以看到,在容器內,msqld進程的擁有者uid也是999,groupid也是999。
【在宿主機器上的進程擁有者uid】和【在容器內的進程擁有者uid】都是999,gid同理,我們已經驗證了第二點。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27330.html
摘要:本文從定義,作用,技術架構,安裝和使用等全方位帶你看懂。最后,于開發者而言提供了一種開發環境的管理辦法,與測試人員而言保證了環境的同步,于運維人員提供了可移植的標準化部署流程。顯示上圖內容就表明安裝完成。 作者丨唐文廣:騰訊工程師,負責無線研發部地圖測試。 導語:Docker,近兩年才流行起來的超輕量級虛擬機,它可以讓你輕松完成持續集成、自動交付、自動部署,并且實現開發環境、測試環...
摘要:本文從定義,作用,技術架構,安裝和使用等全方位帶你看懂。如圖中左邊紅框中和右邊的紅框中都唯一表示為同一個鏡像。最后,于開發者而言提供了一種開發環境的管理辦法,與測試人員而言保證了環境的同步,于運維人員提供了可移植的標準化部署流程。 作者丨唐文廣:騰訊工程師,負責無線研發部地圖測試。 導語:Docker,近兩年才流行起來的超輕量級虛擬機,它可以讓你輕松完成持續集成、自動交付、自動部署...
摘要:問題產生原因最近在使用的時候經常遇到權限問題。如果權限不夠,就會出現問題。從上圖可以看到,主進程的擁有者是,可以讀寫任何文件,權限肯定沒問題。要解決這個問題,其實就是讓用戶有權讀寫以及其中的文件。 問題產生原因 最近在使用docker的時候經常遇到權限問題。通過這個stackoverflow回答,我明白了問題出現的主要原因:Docker在進行bind mount的時候,或者在進行COP...
摘要:而實際上在宿主機中也會同步啟動一個進程,其在宿主機中是。如果其中的某一個容器正在執行密集型的任務,那么它就會影響其他容器的任務執行效率,導致多個容器相互影響并且搶占資源。 作者:榮幸 為什么是容器 如果問你現在最熱門的服務器端技術什么?想必很多人會不假思索的說是容器! 容器技術實際上并不是一個新鮮的名詞,現在大家一提到容器馬上想到的就是Docker,但是容器這個詞并不是Docker公司...
摘要:發現問題之后,相應的解決方法也很簡單把當前目錄的擁有者賦值給,再啟動容器就一切正常了。這時我們已經可以知道容器的本地數據卷中文件目錄的權限是和宿主機上一致的,只是在容器和宿主機中可能映射為不同的用戶組名稱。 Volume數據卷是Docker的一個重要概念。數據卷是可供一個或多個容器使用的特殊目錄,可以為容器應用存儲提供有價值的特性: 持久化數據與容器的生命周期解耦:在容器刪除之后數據卷...
閱讀 1481·2021-11-17 09:33
閱讀 1260·2021-10-11 10:59
閱讀 2892·2021-09-30 09:48
閱讀 1905·2021-09-30 09:47
閱讀 3024·2019-08-30 15:55
閱讀 2337·2019-08-30 15:54
閱讀 1493·2019-08-29 15:25
閱讀 1645·2019-08-29 10:57