Docker基礎(chǔ)(1)—— Docker基本概念

Docker基礎(chǔ)(1)—— Docker基本概念
Docker基礎(chǔ)(2)—— Docker安裝及基礎(chǔ)操作

關(guān)于docker是什么以及docker的教程網(wǎng)上有很多資料豺妓,GitBook上的Docker教程是比較官方和全面的。以下我結(jié)合手冊的學(xué)習(xí)及在慕課網(wǎng)上的課程鞏固總結(jié)出的學(xué)習(xí)手冊。旨在清晰梳理整個上手流程驶沼。

一辣苏、前言

1成洗、什么是Docker

  • Docker是世界領(lǐng)先的軟件容器化平臺
  • Docker公司開發(fā)暗膜,開源,托管在github
  • 跨平臺矢腻,支持Windows门驾、MacOS、Linux

Docker 使用 Google 公司推出的Go語言進(jìn)行開發(fā)實現(xiàn)多柑,基于 Linux 內(nèi)核的cgroup奶是,namespace,以及AUFS類的Union FS等技術(shù)竣灌,對進(jìn)程進(jìn)行封裝隔離聂沙,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進(jìn)程獨立于宿主和其它的隔離的進(jìn)程初嘹,因此也稱其為容器及汉。

Docker 在容器的基礎(chǔ)上,進(jìn)行了進(jìn)一步的封裝屯烦,從文件系統(tǒng)坷随、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等房铭,極大的簡化了容器的創(chuàng)建和維護(hù)。使得 Docker 技術(shù)比虛擬機技術(shù)更為輕便温眉、快捷缸匪。

下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處。傳統(tǒng)虛擬機技術(shù)是虛擬出一套硬件后类溢,在其上運行一個完整操作系統(tǒng)凌蔬,在該系統(tǒng)上再運行所需應(yīng)用進(jìn)程;而容器內(nèi)的應(yīng)用進(jìn)程直接運行于宿主的內(nèi)核豌骏,容器內(nèi)沒有自己的內(nèi)核龟梦,而且也沒有進(jìn)行硬件虛擬。因此容器要比傳統(tǒng)虛擬機更為輕便窃躲。

通俗理解:

Docker是容器技術(shù)的代表,容器技術(shù)從本質(zhì)上講是將程序隔離钦睡、打包的技術(shù)蒂窒。Docker解決了軟件包裝的問題,理順了開發(fā)和運維的環(huán)境的差異荞怒,使得開發(fā)和運維能用同種語言來溝通洒琢。

什么是Docker?官方的解釋:Docker是一個開源的項目褐桌,可以用來將任何應(yīng)用以輕量級容器的形式來打包衰抑、發(fā)布和運行。

類比:可以粗糙地理解為輕量級的虛擬機荧嵌。它和虛擬機某種程度上完成同樣的任務(wù):就是把一個應(yīng)用程序放在一個獨立的環(huán)境里來運行呛踊。

Docker不是虛擬機!

Host_OS:宿主機
Hypervisor:虛擬層啦撮,虛擬出硬件

VM在虛擬層上安裝完全獨立的Guest OS谭网,在里面運行各種個樣的程序。每個虛擬化應(yīng)用程序不僅包括應(yīng)用程序(可能只有10 MB)赃春、必要的二進(jìn)制文件和庫愉择,還包括整個客戶操作系統(tǒng)(可能有10 GB)。

Docker在Docker Engine層上面運行各種程序织中,利用了Host OS里的NameSpace锥涕,ControlGroup等來做到將應(yīng)用程序分離。Docker Engine容器僅包含應(yīng)用程序及其依賴項狭吼。它在主機操作系統(tǒng)的用戶空間中作為獨立進(jìn)程運行层坠,與其他容器共享內(nèi)核。因此搏嗡,它享受了VM的資源隔離和分配好處窿春,但是更加便攜和高效拉一。

2、為什么要用Docker

3旧乞、基本概念

  • 鏡像(Image)
  • 容器(Container)
  • 倉庫(Repository)

理解了這三個概念蔚润,就理解了 Docker 的整個生命周期。

3.1 鏡像

Docker 鏡像是一個特殊的文件系統(tǒng)尺栖,除了提供容器運行時所需的程序嫡纠、庫、資源延赌、配置等文件外除盏,還包含了一些為運行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量挫以、用戶等)者蠕。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變掐松。

分層存儲

鏡像只是一個虛擬的概念踱侣,其實際體現(xiàn)并非由一個文件組成,而是由一組文件系統(tǒng)組成大磺,或者說抡句,由多層文件系統(tǒng)聯(lián)合組成。

Union FS

聯(lián)合文件系統(tǒng)是(Union FS)是linux的存儲技術(shù)杠愧,也是Docker鏡像的存儲方式待榔。 它是分層的文件系統(tǒng),將不同目錄拉到同一個虛擬目錄下流济。下圖展示了Docker用Union FS 搭建的分層鏡像:(比如最下層是操作系統(tǒng)的引導(dǎo)锐锣,上一層是Linux操作系統(tǒng),再上一層是Tomcat袭灯,jdk刺下,再上一層是應(yīng)用代碼)

這些層是只讀的,加載完后這些文件會被看成是同一個目錄稽荧,相當(dāng)于只有一個文件系統(tǒng)橘茉。


我們可以通過docker info查看鏡像的一些信息,可以看到存儲驅(qū)動用的并不是Union FS 而是overlay2姨丈,overlay也是一個聯(lián)合文件系統(tǒng)畅卓,所以上述主要介紹聯(lián)合文件系統(tǒng)的概念,至于這些存儲驅(qū)動的演變過程和優(yōu)缺點蟋恬,可以閱讀http://dockone.io/article/1765翁潘。

鏡像構(gòu)建時,會一層層構(gòu)建歼争,前一層是后一層的基礎(chǔ)拜马。每一層構(gòu)建完就不會再發(fā)生改變渗勘,后一層上的任何改變只發(fā)生在自己這一層。(比如俩莽,刪除前一層文件的操作旺坠,實際不是真的刪除前一層的文件,而是僅在當(dāng)前層標(biāo)記為該文件已刪除扮超。在最終容器運行的時候取刃,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像出刷。因此璧疗,在構(gòu)建鏡像的時候,需要額外小心馁龟,每一層盡量只包含該層需要添加的東西崩侠,任何額外的東西應(yīng)該在該層構(gòu)建結(jié)束前清理掉。)

分層存儲的特征還使得鏡像的復(fù)用屁柏、定制變的更為容易啦膜。甚至可以用之前構(gòu)建好的鏡像作為基礎(chǔ)層,然后進(jìn)一步添加新的層淌喻,以定制自己所需的內(nèi)容,構(gòu)建新的鏡像雀摘。

3.2 容器

鏡像(Image)和容器(Container)的關(guān)系裸删,就像是面向?qū)ο蟪绦蛟O(shè)計中的 類 和 實例 一樣,鏡像是靜態(tài)的定義阵赠,容器是鏡像運行時的實體涯塔。容器可以被創(chuàng)建、啟動清蚀、停止匕荸、刪除、暫停等枷邪。

容器的實質(zhì)是進(jìn)程榛搔,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運行于屬于自己的獨立的命名空間东揣。因此容器可以擁有自己的root文件系統(tǒng)践惑、自己的網(wǎng)絡(luò)配置、自己的進(jìn)程空間嘶卧,甚至自己的用戶 ID 空間尔觉。容器內(nèi)的進(jìn)程是運行在一個隔離的環(huán)境里,使用起來芥吟,就好像是在一個獨立于宿主的系統(tǒng)下操作一樣侦铜。這種特性使得容器封裝的應(yīng)用比直接在宿主運行更加安全专甩。也因為這種隔離的特性,很多人初學(xué) Docker 時常常會混淆容器和虛擬機钉稍。

前面講過鏡像使用的是分層存儲涤躲,容器也是如此。每一個容器運行時嫁盲,是以鏡像為基礎(chǔ)層篓叶,在其上創(chuàng)建一個當(dāng)前容器的存儲層,我們可以稱這個為容器運行時讀寫而準(zhǔn)備的存儲層為容器存儲層羞秤。

容器存儲層的生存周期和容器一樣缸托,容器消亡時,容器存儲層也隨之消亡瘾蛋。因此俐镐,任何保存于容器存儲層的信息都會隨容器刪除而丟失。

3.3 倉庫

鏡像構(gòu)建完成后哺哼,可以很容易的在當(dāng)前宿主機上運行佩抹,但是,如果需要在其它服務(wù)器上使用這個鏡像取董,我們就需要一個集中的存儲棍苹、分發(fā)鏡像的服務(wù),Docker Registry 就是這樣的服務(wù)茵汰。

一個 Docker Registry 中可以包含多個倉庫(Repository)枢里;每個倉庫可以包含多個標(biāo)簽(Tag);每個標(biāo)簽對應(yīng)一個鏡像蹂午。

通常栏豺,一個倉庫會包含同一個軟件不同版本的鏡像,而標(biāo)簽就常用于對應(yīng)該軟件的各個版本豆胸。我們可以通過<倉庫名>:<標(biāo)簽>的格式來指定具體是這個軟件哪個版本的鏡像奥洼。如果不給出標(biāo)簽,將以latest作為默認(rèn)標(biāo)簽晚胡。(以 Ubuntu 鏡像為例灵奖,ubuntu是倉庫的名字,其內(nèi)包含有不同的版本標(biāo)簽搬泥,如桑寨,14.04,16.04。我們可以通過ubuntu:14.04忿檩,或者ubuntu:16.04來具體指定所需哪個版本的鏡像尉尾。如果忽略了標(biāo)簽,比如ubuntu燥透,那將視為ubuntu:latest沙咏。)

倉庫名經(jīng)常以兩段式路徑形式出現(xiàn)辨图,比如huangbaoling/nginx-proxy,前者往往意味著 Docker Registry 多用戶環(huán)境下的用戶名肢藐,后者則往往是對應(yīng)的軟件名故河。但這并非絕對,取決于所使用的具體 Docker Registry 的軟件或服務(wù)吆豹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鱼的,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子痘煤,更是在濱河造成了極大的恐慌凑阶,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衷快,死亡現(xiàn)場離奇詭異宙橱,居然都是意外死亡,警方通過查閱死者的電腦和手機蘸拔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門师郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人调窍,你說我怎么就攤上這事宝冕。” “怎么了邓萨?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵猬仁,是天一觀的道長。 經(jīng)常有香客問我先誉,道長,這世上最難降的妖魔是什么的烁? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任褐耳,我火速辦了婚禮,結(jié)果婚禮上渴庆,老公的妹妹穿的比我還像新娘铃芦。我一直安慰自己,他們只是感情好襟雷,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布刃滓。 她就那樣靜靜地躺著,像睡著了一般耸弄。 火紅的嫁衣襯著肌膚如雪咧虎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天计呈,我揣著相機與錄音砰诵,去河邊找鬼征唬。 笑死,一個胖子當(dāng)著我的面吹牛茁彭,可吹牛的內(nèi)容都是我干的总寒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼理肺,長吁一口氣:“原來是場噩夢啊……” “哼摄闸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妹萨,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤年枕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眠副,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體画切,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年囱怕,在試婚紗的時候發(fā)現(xiàn)自己被綠了霍弹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡娃弓,死狀恐怖典格,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情台丛,我是刑警寧澤耍缴,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站挽霉,受9級特大地震影響防嗡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侠坎,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一蚁趁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧实胸,春花似錦他嫡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至门躯,卻和暖如春淆党,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工宁否, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窒升,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓慕匠,卻偏偏與公主長得像饱须,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子台谊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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