6.docker鏡像原理

問題:我們通過docker下載centos的大小僅僅在200M左右唱矛,但下載一個tomcat就需要500M以上癣猾!這看著就很不合理。因為在window上通過虛擬機(jī)安裝一個centos大概需要4G以上,而下載最新的tomcat9也不超過20M使兔。


image.png
image.png

拋除centos的各種硬件模擬靶端,因為docker不需要Hypervisor實現(xiàn)硬件資源虛擬化谎势,centos的問題似乎可以得到解釋。但tomcat可沒辦法解釋了杨名,20M到500M的變化脏榆。

在查看相關(guān)資料后,為了說明這個問題镣煮,還是要解釋docker的鏡像到底是怎么生成的姐霍。

(UnionFS)文件聯(lián)合系統(tǒng)

UnionFS(聯(lián)合文件系統(tǒng)):Union文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng)典唇,它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加镊折,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。Union 文件系統(tǒng)是 Docker 鏡像的基礎(chǔ)介衔。鏡像可以通過分層來進(jìn)行繼承恨胚,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像炎咖。

花卷.png

特性:一次同時加載多個文件系統(tǒng)赃泡,但從外面看起來,只能看到一個文件系統(tǒng)乘盼,聯(lián)合加載會把各層文件系統(tǒng)疊加起來升熊,這樣最終的文件系統(tǒng)會包含所有底層的文件和目錄。就像是花卷一樣绸栅,一層套一層级野,但能看到的只有最外面那一層。

Docker鏡像加載原理

docker的鏡像實際上由一層一層的文件系統(tǒng)組成粹胯,這種層級的文件系統(tǒng)UnionFS蓖柔。

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導(dǎo)加載kernel, Linux剛啟動時會加載bootfs文件系統(tǒng)辰企,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統(tǒng)是一樣的况鸣,包含boot加載器和內(nèi)核牢贸。當(dāng)boot加載完成之后整個內(nèi)核就都在內(nèi)存中了,此時內(nèi)存的使用權(quán)已由bootfs轉(zhuǎn)交給內(nèi)核镐捧,此時系統(tǒng)也會卸載bootfs潜索。

rootfs (root file system) ,在bootfs之上愤估。包含的就是典型 Linux 系統(tǒng)中的 /dev, /proc, /bin, /etc 等標(biāo)準(zhǔn)目錄和文件帮辟。rootfs就是各種不同的操作系統(tǒng)發(fā)行版,比如Ubuntu玩焰,Centos等等由驹。


image.png

那為什么centos的鏡像只有200M?
對于一個精簡的OS昔园,rootfs可以很小蔓榄,只需要包括最基本的命令、工具和程序庫就可以了默刚,因為底層直接用Host的kernel甥郑,自己只需要提供 rootfs 就行了。由此可見對于不同的linux發(fā)行版, bootfs基本是一致的, rootfs會有差別, 因此不同的發(fā)行版可以公用bootfs荤西。
也就是說澜搅,安裝一個centos鏡像,只要下載一個kernel(linux核心)+centos rootfs(centos的命令行)邪锌,下載一個ubuntu勉躺,也只是下載一個kernel(linux核心)+rootfs(ubuntu的命令行)。
下載最新版centos

image.png

我們注意到只有一個complete
這個下載完成的就是centos的rootfs

而如果我們下載其他的比如mongo

image.png

這里下載會有很多的complete觅丰,是因為mongo要依賴很多東西饵溅,一層套一層,最終才能運(yùn)行起來妇萄。

回到我們的問題蜕企,為什么tomcat這么大?
因為tomcat運(yùn)行至少需要3層鋪墊冠句。第一層os內(nèi)核轻掩,也就是我們的kernel,第二層centos
懦底,第三層jdk放典,最外層才是我們的tomcat。

docker鏡像采用這種技術(shù)有什么好處?

最大的一個好處就是 - 共享資源
比如:有多個鏡像都從相同的 base 鏡像構(gòu)建而來奋构,那么宿主機(jī)只需在磁盤上保存一份base鏡像,同時內(nèi)存中也只需加載一份 base 鏡像拱层,就可以為所有容器服務(wù)了弥臼。而且鏡像的每一層都可以被共享。

docker鏡像這種分層結(jié)構(gòu)有什么特點

docker鏡像都是只讀的根灯,當(dāng)容器啟動時径缅,一個新的可寫層被加載到鏡像頂部。這一層通常稱為“容器層”烙肺,而容器層下面的都是鏡像層纳猪。

commit(將自定義的鏡像提交到本地)

類似于git commit嘛,沒啥好說的桃笙。比如我們運(yùn)行了一個mysql容器氏堤,通過navicat連接向mysql中建表,填數(shù)據(jù)搏明,我們想把這個鏡像保存了鼠锈,提供給其他人使用,這樣其他人拿到鏡像的時候就已經(jīng)有已經(jīng)寫好的表和數(shù)據(jù)了星著。

docker commit -m "提交你的描述信息" -a="作者" 容器id 要創(chuàng)建的目標(biāo)鏡像名:[標(biāo)簽名(版本號)]
image.png

至于怎么push到遠(yuǎn)程倉庫购笆,之后再寫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虚循,一起剝皮案震驚了整個濱河市同欠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌横缔,老刑警劉巖铺遂,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剪廉,居然都是意外死亡娃循,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門斗蒋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捌斧,“玉大人,你說我怎么就攤上這事泉沾±搪欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵跷究,是天一觀的道長姓迅。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么丁存? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任肩杈,我火速辦了婚禮,結(jié)果婚禮上解寝,老公的妹妹穿的比我還像新娘扩然。我一直安慰自己,他們只是感情好聋伦,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布夫偶。 她就那樣靜靜地躺著,像睡著了一般觉增。 火紅的嫁衣襯著肌膚如雪兵拢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天逾礁,我揣著相機(jī)與錄音说铃,去河邊找鬼。 笑死敞斋,一個胖子當(dāng)著我的面吹牛截汪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播植捎,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼衙解,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焰枢?” 一聲冷哼從身側(cè)響起蚓峦,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎济锄,沒想到半個月后暑椰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡荐绝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年一汽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片低滩。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡召夹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恕沫,到底是詐尸還是另有隱情监憎,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布婶溯,位于F島的核電站鲸阔,受9級特大地震影響偷霉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褐筛,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一类少、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渔扎,春花似錦瞒滴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虏两。三九已至愧旦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間定罢,已是汗流浹背笤虫。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留祖凫,地道東北人琼蚯。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像惠况,于是被迫代替她去往敵國和親遭庶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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