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