溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker容器文件系統(tǒng)的知識點(diǎn)有哪些

發(fā)布時間:2022-05-26 15:26:56 來源:億速云 閱讀:309 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“Docker容器文件系統(tǒng)的知識點(diǎn)有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Docker容器文件系統(tǒng)的知識點(diǎn)有哪些”吧!

docker 容器文件系統(tǒng)

dockerfile是軟件的原材料,docker鏡像是軟件的交付品,而docker容器則可以認(rèn)為是軟件的運(yùn)行態(tài)。從應(yīng)用軟件的角度來看,dockerfile、docker鏡像與docker容器分別代表軟件的三個不同階段,dockerfile面向開發(fā),docker鏡像成為交付標(biāo)準(zhǔn),docker容器則涉及部署與運(yùn)維,三者缺一不可,合力充當(dāng)docker體系的基石。

docker鏡像

docker鏡像是dockerfile的產(chǎn)物,是docker容器的前提,大有承前啟后之意。docker技術(shù)發(fā)展兩年有余,相信大家很早就聽說過docker大多采用聯(lián)合文件系統(tǒng)(union filesystem),為docker容器提供文件系統(tǒng)服務(wù)。

關(guān)于docker鏡像,有以下特性:

  1. 由dockerfile生成

  2. 呈現(xiàn)層級結(jié)構(gòu)

  3. 每層鏡像包含:鏡像文件以及鏡像json元數(shù)據(jù)信息

docker容器

docker容器是docker鏡像的運(yùn)行態(tài)體現(xiàn)。概括而言,就是在docker鏡像之上,運(yùn)行進(jìn)程。進(jìn)程啟動的方式有兩種,用戶即可以選擇運(yùn)行自己另行指定的命令,也可以選擇運(yùn)行docker鏡像內(nèi)部指定的命令。

docker容器的文件系統(tǒng),可以說大部分由docker鏡像來提供。為什么說是大部分呢?其實(shí)是有原因的,鏡像內(nèi)容雖多,但依然不是全部。下面,我會帶大家看看,docker鏡像中有什么,而docker容器的哪些內(nèi)容不在docker鏡像中。

docker容器文件系統(tǒng)

那就讓我們一圖看盡docker容器的文件系統(tǒng):

Docker容器文件系統(tǒng)的知識點(diǎn)有哪些

上圖從一個較為全面的角度闡述了dockerfiledocker鏡像docker容器三者的關(guān)系。

dockerfile體現(xiàn)

docker容器已經(jīng)在運(yùn)行,但是追本溯源,我們依然可以找到dockerfile的影子。上圖中,我們可以發(fā)現(xiàn),docker容器依附docker鏡像,而docker鏡像dockerfile是這樣的:

from ubuntu:14.04
add run.sh /
volume /data
cmd ["./run.sh"]

我們可以看到,以上dockerfile中的每一條命令,都在docker鏡像中以一個獨(dú)立鏡像層的形式存在。

docker鏡像體現(xiàn)

毫無疑問,docker鏡像是由dockerfile構(gòu)建而成,我們也可以看到圖中下4層被標(biāo)記為docker鏡像。作為docker技術(shù)的核心,我們必須了解docker如何構(gòu)建鏡像,以及docker鏡像構(gòu)建之后的產(chǎn)物是什么。

初次接觸docker,了解層級管理的docker鏡像之后,很容易就認(rèn)為:每一層docker鏡像中都含有相應(yīng)的文件系統(tǒng)文件。其實(shí)不然,以上dockerfile中的4條命令,則是一個很好的佐證。

from ubuntu:14.04 :設(shè)置基礎(chǔ)鏡像,此時會使用基礎(chǔ)鏡像ubuntu:14.04的所有鏡像層,為簡單起見,圖中將其作為一個整體展示。

add run.sh /:將dockerfile所在目錄的文件run.sh加至鏡像的根目錄,此時新一層的鏡像只有一項(xiàng)內(nèi)容,即根目錄下的run.sh.

volume /data:設(shè)定鏡像的volume,此volume在容器內(nèi)部的路徑為/data。需要注意的是,此時并未在新一層的鏡像中添加任何文件,但更新了鏡像的json文件,以便通過此鏡像啟動容器時獲取這方面的信息。

cmd ["./run.sh"]:設(shè)置鏡像的默認(rèn)執(zhí)行入口,此命令同樣不會在新建鏡像中添加任何文件,僅僅在上一層鏡像json文件的基礎(chǔ)上更新新建鏡像的json文件。docker容器體現(xiàn)

涉及到docker容器,便是動態(tài)的內(nèi)容,一切似乎都有了生命。上文曾提及,docker容器的文件系統(tǒng)中不僅包含docker鏡像。此言不虛,圖中的頂上兩層,就是docker為docker容器新建的內(nèi)容,而這兩層恰恰不屬于鏡像范疇。

這兩層分別為docker容器的初始層(init layer)與可讀寫層(read-write layer),初始層中大多是初始化容器環(huán)境時,與容器相關(guān)的環(huán)境信息,如容器主機(jī)名,主機(jī)host信息以及域名服務(wù)文件等。

再來看可讀寫層,這一層的作用非常大,docker的鏡像層以及頂上的兩層加起來,docker容器內(nèi)的進(jìn)程只對可讀寫層擁有寫權(quán)限,其他層對進(jìn)程而言都是只讀的(read-only)。如aufs等文件系統(tǒng)下,寫下層鏡像內(nèi)容即會涉及cow(copy-on-write)技術(shù)。另外,關(guān)于volume以及容器的hosts、hostname、resolv.conf文件等都會掛載到這里。需要額外注意的是:雖然docker容器有能力在可讀寫層看到volume以及hosts文件等內(nèi)容,但那都僅僅是掛載點(diǎn),真實(shí)內(nèi)容位于宿主機(jī)上。

感謝各位的閱讀,以上就是“Docker容器文件系統(tǒng)的知識點(diǎn)有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Docker容器文件系統(tǒng)的知識點(diǎn)有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI