docker鏡像原理

簡(jiǎn)介

docker鏡像是一個(gè)只讀的Docker容器模板吏垮,含有Dokcer容器啟動(dòng)所需的內(nèi)容橄维。Docker鏡像是Dokcer容器的的靜態(tài)視角,Dokcer容器是Docker鏡像的運(yùn)行狀態(tài)

Dokcer鏡像結(jié)構(gòu)

rootfs

Docker鏡像的文件內(nèi)容以及一些運(yùn)行Docker容器所需要的配置文件組成了Dokcer容器運(yùn)行的靜態(tài)文件系統(tǒng)rootfs窑业。

rootfs是Docker容器啟動(dòng)時(shí)內(nèi)部進(jìn)程可見的文件系統(tǒng)翔怎,即Docker的根目錄梭灿。通常包括類Unix系統(tǒng)的文件目錄画侣,如:/dev /usr /bin /etc /tmp /lib以及Docker運(yùn)行所需要的配置、工具等堡妒。

Docker Daemon為容器過載rootfs是配乱,會(huì)先將rootfs設(shè)為只讀模式。掛載完畢之后利用聯(lián)合掛載技術(shù)在已有的只讀rootfs上再掛載一個(gè)讀寫層皮迟,可讀寫層就處于文件系統(tǒng)的最頂層搬泥,只有在Docker容器運(yùn)行過程中文件系統(tǒng)變化是,才會(huì)把變化寫到可讀寫層伏尼。

Docker鏡像主要特點(diǎn)

分層

Docker鏡像才有分層的方式構(gòu)建忿檩,每個(gè)鏡像都由一系列鏡像層構(gòu)成”祝可讀寫層始終處于文件系統(tǒng)最上層燥透,當(dāng)需要修改鏡像內(nèi)某個(gè)文件是沙咏,只對(duì)處于最上方的可讀寫層進(jìn)行修改,不覆寫下層文件內(nèi)容班套,已有文件在讀寫層中原始文件依然存在肢藐,但會(huì)唄新的鎖屏蔽。

使用docker commit提交修改保存為新的鏡像時(shí)吱韭,保存的是最上層的讀寫層被更新的文件吆豹,原始文件未保存。

寫時(shí)復(fù)制(copy-on-write)

Docker鏡像使用了寫時(shí)復(fù)制的策略理盆,多個(gè)容易共享同一個(gè)鏡像時(shí)痘煤,啟動(dòng)的時(shí)候并不需要單獨(dú)復(fù)制一份鏡像,而是將所有鏡像層以只讀方式掛載到一個(gè)掛載點(diǎn)猿规,再在上面覆蓋一個(gè)可讀寫層衷快。

未更改文件內(nèi)容時(shí),所有容器共享同一份鏡像數(shù)據(jù)姨俩。

在發(fā)生更改時(shí)烦磁,才把內(nèi)容寫到可讀寫層,隱藏老版本的文件內(nèi)容哼勇。

聯(lián)合掛載

聯(lián)合掛載就是在一個(gè)掛載點(diǎn)同時(shí)掛載多個(gè)文件系統(tǒng),將掛載點(diǎn)的原目錄與被掛載內(nèi)容進(jìn)行整合呕乎,积担,使得最終可見的文件系統(tǒng)將會(huì)包含整合之后各層的文件和目錄。實(shí)現(xiàn)這種掛載技術(shù)的文件系統(tǒng)被稱為聯(lián)合掛載系統(tǒng)猬仁。

內(nèi)容尋址

顧名思義帝璧,內(nèi)容尋址是根據(jù)文件內(nèi)容來索引鏡像和鏡像層。對(duì)鏡像層的內(nèi)容進(jìn)行校驗(yàn)和湿刽,生成一個(gè)內(nèi)容Hash值的烁,并以此Hash值作為鏡像層唯一標(biāo)識(shí)。

該機(jī)制提高了鏡像的安全性诈闺,并在pull 渴庆、push、load雅镊、save之后檢測(cè)鏡像完整性襟雷。

同時(shí),基于鏡像層的Hash校驗(yàn)和仁烹,在一定程度上減少了ID的沖突耸弄,增強(qiáng)了鏡像的共享。

Docker鏡像的幾個(gè)關(guān)鍵概念

registry

registry用于保存Docker鏡像卓缰,包括鏡像層次結(jié)構(gòu)與鏡像元數(shù)據(jù)

respository

repository是由具有某個(gè)功能的Docker鏡像的所有迭代版本構(gòu)成的鏡像組计呈。registry由一系列經(jīng)過命名的repository組成砰诵。

用戶倉庫命名有用戶名和倉庫名自稱,userName/repositoryName

manifest

manifest(描述文件)主要存在于registry中作為Docker鏡像的元數(shù)據(jù)文件捌显,在pull茁彭、push、save苇瓣、load中作為鏡像接口和基礎(chǔ)信息的描述文件尉间。

在鏡像唄pull或者load到本地宿主機(jī)時(shí),manifest被轉(zhuǎn)化為本地鏡像配置文件config

image和layer

image是用來存儲(chǔ)一組鏡像相關(guān)的元數(shù)據(jù)信息击罪,主要包括鏡像的架構(gòu)(amd64)哲嘲、鏡像的默認(rèn)配置信息、構(gòu)建鏡像的容器配置信息媳禁、包含所有鏡像層信息的rootfs眠副。Docker根據(jù)rootfs中的diff_id計(jì)算出內(nèi)容尋址的索引(chainId)萊獲取layer信息,從而進(jìn)一步獲取鏡像信息竣稽。

layer(鏡像層)是用來管理鏡像層的中間概念囱怕,主要存放了鏡像層的diff_id、size毫别、cache-id和parent等娃弓,實(shí)際的文件內(nèi)容有存儲(chǔ)驅(qū)動(dòng)萊管理,可通過cache-id在本地索引到

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岛宦,一起剝皮案震驚了整個(gè)濱河市台丛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砾肺,老刑警劉巖挽霉,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異变汪,居然都是意外死亡侠坎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門裙盾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來实胸,“玉大人,你說我怎么就攤上這事番官⊥郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鲤拿,是天一觀的道長(zhǎng)假褪。 經(jīng)常有香客問我,道長(zhǎng)近顷,這世上最難降的妖魔是什么生音? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任宁否,我火速辦了婚禮,結(jié)果婚禮上缀遍,老公的妹妹穿的比我還像新娘慕匠。我一直安慰自己,他們只是感情好域醇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布台谊。 她就那樣靜靜地躺著,像睡著了一般譬挚。 火紅的嫁衣襯著肌膚如雪锅铅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天减宣,我揣著相機(jī)與錄音盐须,去河邊找鬼。 笑死漆腌,一個(gè)胖子當(dāng)著我的面吹牛贼邓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闷尿,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塑径,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了填具?” 一聲冷哼從身側(cè)響起晓勇,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灌旧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绰筛,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枢泰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铝噩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衡蚂。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骏庸,靈堂內(nèi)的尸體忽然破棺而出毛甲,到底是詐尸還是另有隱情,我是刑警寧澤具被,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布玻募,位于F島的核電站,受9級(jí)特大地震影響一姿,放射性物質(zhì)發(fā)生泄漏七咧。R本人自食惡果不足惜跃惫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艾栋。 院中可真熱鬧爆存,春花似錦、人聲如沸蝗砾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悼粮。三九已至闲勺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矮锈,已是汗流浹背霉翔。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苞笨,地道東北人债朵。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瀑凝,于是被迫代替她去往敵國和親序芦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件粤咪?Google Compute Engi...
    ahohoho閱讀 15,532評(píng)論 15 147
  • 一谚中、Docker 簡(jiǎn)介 Docker 兩個(gè)主要部件:Docker: 開源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,385評(píng)論 0 27
  • 0x01 核心概念 Docker鏡像類似于虛擬機(jī)鏡像,可以理解為一個(gè)面向Docker引擎的只讀模板寥枝,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,714評(píng)論 0 9
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一宪塔、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,499評(píng)論 0 120
  • 看到她從專科生到研究生我是衷心的祝福囊拜,只是我覺著的吧某筐,我是達(dá)不到了啊哈!
    租的閱讀 149評(píng)論 0 0