Docker的一些概念

容器的核心理念在于通過鏡像將運行環(huán)境打包漓帅,實現(xiàn)“一次構建埠况,處處運行”筷凤,從而避免了運行環(huán)境不一致導致的各種異常昭殉。
在容器鏡像的發(fā)布流程中,鏡像倉庫 扮演了鏡像的存儲和分發(fā)角色藐守,并且通過 tag 支持鏡像的版本管理饲化,類似于 Git 倉庫在代碼開發(fā)過程中所扮演的角色,是整個容器環(huán)境中不可缺少的組成部分

再說什么是Docker

什么是Docker吗伤?通過下面四點向你說明Docker到底是個什么東西吃靠。

  • Docker是世界領先的軟件容器平臺。
  • Docker使用Google公司推出的Go語言進行開發(fā)實現(xiàn)足淆,基于Linux內核的cgroup巢块,namespace,以及AUFS類的UnionFS等技術巧号,對進程進行封裝隔離族奢,屬于操作系統(tǒng)層面的虛擬化技術。 由于隔離的進程獨立于宿主和其它的隔離的進程丹鸿,因此也稱其為容器越走。Docke最初實現(xiàn)是基于LXC。
  • Docker能夠自動執(zhí)行重復性任務靠欢,例如搭建和配置開發(fā)環(huán)境廊敌,從而解放了開發(fā)人員以便他們專注在真正重要的事情上:構建杰出的軟件。
  • 用戶可以方便地創(chuàng)建和使用容器门怪,把自己的應用放入容器骡澈。容器還可以進行版本管理、復制掷空、分享肋殴、修改坦弟,就像管理普通的代碼一樣。

Docker思想

  • 集裝箱
  • 標準化: ①運輸方式酿傍、②存儲方式、 ③API接口
  • 隔離

Docker容器的特點

  • 輕量拧粪,在一臺機器上運行的多個Docker容器可以共享這臺機器的操作系統(tǒng)內核修陡;它們能夠迅速啟動,只需占用很少的計算和內存資源魄鸦。鏡像是通過文件系統(tǒng)層進行構造的,并共享一些公共文件拾因。這樣就能盡量降低磁盤用量,并能更快地下載鏡像旷余。
  • 標準绢记,Docker容器基于開放式標準,能夠在所有主流Linux版本正卧、Microsoft Windows以及包括VM、裸機服務器和云在內的任何基礎設施上運行签孔。
  • 安全窘行,Docker賦予應用的隔離性不僅限于彼此隔離,還獨立于底層的基礎設施罐盔。Docker默認提供最強的隔離,因此應用出現(xiàn)問題惶看,也只是單個容器的問題呈驶,而不會波及到整臺機器。

為什么要用Docker

  • Docker的鏡像提供了除內核外完整的運行時環(huán)境,確保了應用運行環(huán)境一致性扼菠,從而不會再出現(xiàn)“這段代碼在我機器上沒問題啊”這類問題;——一致的運行環(huán)境
  • 可以做到秒級懂拾、甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)岖赋、測試瓮孙、部署的時間选脊×掣剩——更快速的啟動時間
  • 避免公用的服務器,資源會容易受到其他用戶的影響丹诀《鄣模——隔離性
  • 善于處理集中爆發(fā)的服務器使用壓力;——彈性伸縮硝桩,快速擴展
  • 可以很輕易的將在一個平臺上運行的應用枚荣,遷移到另一個平臺上,而不用擔心運行環(huán)境的變化導致應用無法正常運行的情況望薄。——遷移方便
  • 使用Docker可以通過定制應用鏡像來實現(xiàn)持續(xù)集成呼畸、持續(xù)交付、部署卧须∪逶桑——持續(xù)交付和部署

容器 VS 虛擬機

傳統(tǒng)虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統(tǒng)蹦漠,在該系統(tǒng)上再運行所需應用進程;而容器內的應用進程直接運行于宿主的內核隘击,容器內沒有自己的內核研铆,而且也沒有進行硬件虛擬。因此容器要比傳統(tǒng)虛擬機更為輕便棵红。

二者對比圖

image

容器虛擬化的是操作系統(tǒng)而不是硬件,容器之間是共享同一套操作系統(tǒng)資源的虱肄。
虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統(tǒng)斟或。因此容器的隔離級別會稍低一些翰灾。

容器與虛擬機 (VM) 總結

image

  • 容器是一個應用層抽象稚茅,用于將代碼和依賴資源打包在一起。 多個容器可以在同一臺機器上運行咽块,共享操作系統(tǒng)內核欺税,但各自作為獨立的進程在用戶空間中運行 。與虛擬機相比晚凿, 容器占用的空間較少(容器鏡像大小通常只有幾十兆),瞬間就能完成啟動 应役。
  • 虛擬機(VM)是一個物理硬件層抽象燥筷,用于將一臺服務器變成多臺服務器。 管理程序允許多個VM在一臺機器上運行肆氓。每個VM都包含一整套操作系統(tǒng)、一個或多個應用蕉陋、必要的二進制文件和庫資源拨扶,因此占用大量空間。而且VM啟動也十分緩慢 屈雄。

Docker包括三個基本概念:

  • 鏡像(Image)
  • 容器(Container)
  • 倉庫(Repository)
鏡像(Image)——一個特殊的文件系統(tǒng)

操作系統(tǒng)分為內核和用戶空間酒奶。對于Linux而言奶赔,內核啟動后杠氢,會掛載root文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image)鼻百,就相當于是一個root文件系統(tǒng)。

Docker鏡像是一個特殊的文件系統(tǒng)因悲,除了提供容器運行時所需的程序勺爱、庫、資源琐鲁、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷顾翼、環(huán)境變量奈泪、用戶等)。 鏡像不包含任何動態(tài)數(shù)據(jù)段磨,其內容在構建之后也不會被改變。

Docker設計時砾隅,就充分利用Union FS的技術债蜜,將其設計為分層存儲的架構。 鏡像實際是由多層文件系統(tǒng)聯(lián)合組成儒洛。

容器(Container)——鏡像運行時的實體

鏡像(Image)和容器(Container)的關系狼速,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體惊完。容器可以被創(chuàng)建处硬、啟動、停止荷辕、刪除、暫停等 控嗜。

容器的實質是進程案站,但與直接在宿主執(zhí)行的進程不同棘街,容器進程運行于屬于自己的獨立的命名空間。前面講過鏡像使用的是分層存儲石挂,容器也是如此险污。

容器存儲層的生存周期和容器一樣,容器消亡時蛔糯,容器存儲層也隨之消亡。因此动壤,任何保存于容器存儲層的信息都會隨容器刪除而丟失淮逻。

按照Docker最佳實踐的要求,容器不應該向其存儲層內寫入任何數(shù)據(jù) 爬早,容器存儲層要保持無狀態(tài)化。所有的文件寫入操作醉旦,都應該使用數(shù)據(jù)卷(Volume)、或者綁定宿主目錄咙崎,在這些位置的讀寫會跳過容器存儲層吨拍,直接對宿主(或網(wǎng)絡存儲)發(fā)生讀寫,其性能和穩(wěn)定性更高羹饰。數(shù)據(jù)卷的生存周期獨立于容器,容器消亡笑旺,數(shù)據(jù)卷不會消亡馍资。因此, 使用數(shù)據(jù)卷后鸟蟹,容器可以隨意刪除建钥、重新run,數(shù)據(jù)卻不會丟失熊经。

倉庫(Repository)——集中存放鏡像文件的地方

鏡像構建完成后,可以很容易的在當前宿主上運行匹涮,但是槐壳, 如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲脚翘、分發(fā)鏡像的服務绍哎,Docker Registry就是這樣的服務。

一個Docker Registry中可以包含多個倉庫(Repository)崇堰;每個倉庫可以包含多個標簽(Tag)涩咖;每個標簽對應一個鏡像繁莹。所以說:鏡像倉庫是Docker用來集中存放鏡像文件的地方類似于我們之前常用的代碼倉庫。

鏡像倉庫實現(xiàn)方式按使用范圍可以分為Docker Hub 和 Docker Registry兩類咨演,前者是在公網(wǎng)環(huán)境下面向所有容器使用者開放的鏡像服務,后者是供開發(fā)者或公司在內部環(huán)境下搭建鏡像倉庫服務饵较,由于公網(wǎng)下載鏡像的網(wǎng)絡帶寬遭赂、延遲限制以及可控性的角度考慮,在私有云環(huán)境下通常需要采用 Docker Registry 來搭建自己的鏡像倉庫服務撇他。

最常使用的Registry公開服務是官方的Docker Hub 困肩,這也是默認的Registry,并擁有大量的高質量的官方鏡像僻弹,網(wǎng)址為:hub.docker.com 他嚷。

Build,Ship卸耘,and Run

Docker - Build, Ship, and Run Any App, Anywhere

  • Build(構建鏡像):鏡像就像是集裝箱包括文件以及運行環(huán)境等等資源粘咖。
  • Ship(運輸鏡像):主機和倉庫間運輸,這里的倉庫就像是超級碼頭一樣翰铡。
  • Run (運行鏡像):運行的鏡像就是一個容器讽坏,容器就是運行程序的地方。

UnionFS

目的:把不同物理位置的目錄合并mount到同一個目錄中

原理說明

寫時復制(CoW)
所有驅動都用到的技術——寫時復制(CoW)迷捧。
CoW就是copy-on-write,表示只在需要寫時才去復制漠秋,這個是針對已有文件的修改場景。比如基于一個image啟動多個Container捅位,如果為每個Container都去分配一個image一樣的文件系統(tǒng)搂抒,那么將會占用大量的磁盤空間。而CoW技術可以讓所有的容器共享image的文件系統(tǒng)中符,所有數(shù)據(jù)都從image中讀取誉帅,只有當要對文件進行寫操作時,才從image里把要寫的文件復制到自己的文件系統(tǒng)進行修改蚜锨。所以無論有多少個容器共享同一個image亚再,所做的寫操作都是對從image中復制到自己的文件系統(tǒng)中的復本上進行,并不會修改image的源文件氛悬,且多個容器操作同一個文件,會在每個容器的文件系統(tǒng)里生成一個復本棍现,每個容器修改的都是自己的復本镜遣,相互隔離,相互不影響谎僻。使用CoW可以有效的提高磁盤的利用率寓辱。

用時分配(allocate-on-demand)
而寫時分配是用在原本沒有這個文件的場景,只有在要新寫入一個文件時才分配空間讶舰,這樣可以提高存儲資源的利用率。比如啟動一個容器般甲,并不會為這個容器預分配一些磁盤空間,而是當有新文件寫入時墓造,才按需分配新空間锚烦。

Union FS 參考鏈接
Docker的一些概念 參考鏈接

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蛉拙,隨后出現(xiàn)的幾起案子彻亲,更是在濱河造成了極大的恐慌,老刑警劉巖畸肆,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙址,死亡現(xiàn)場離奇詭異抡砂,居然都是意外死亡,警方通過查閱死者的電腦和手機舀患,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門聊浅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來现使,“玉大人,你說我怎么就攤上這事碳锈。” “怎么了强重?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵间景,是天一觀的道長。 經常有香客問我倘要,道長,這世上最難降的妖魔是什么志鹃? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任泽西,我火速辦了婚禮,結果婚禮上铛只,老公的妹妹穿的比我還像新娘糠溜。我一直安慰自己,他們只是感情好蜕着,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布红柱。 她就那樣靜靜地躺著,像睡著了一般韧骗。 火紅的嫁衣襯著肌膚如雪零聚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天政模,我揣著相機與錄音蚂会,去河邊找鬼。 笑死趁猴,一個胖子當著我的面吹牛,可吹牛的內容都是我干的儡司。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼让蕾,長吁一口氣:“原來是場噩夢啊……” “哼或听!你這毒婦竟也來了?” 一聲冷哼從身側響起顿颅,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粱腻,失蹤者是張志新(化名)和其女友劉穎斩跌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耀鸦,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡袖订,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了上沐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楞艾。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡产徊,死狀恐怖,靈堂內的尸體忽然破棺而出舟铜,到底是詐尸還是另有隱情奠衔,我是刑警寧澤塘娶,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布刁岸,位于F島的核電站她我,受9級特大地震影響,放射性物質發(fā)生泄漏番舆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一疏哗、第九天 我趴在偏房一處隱蔽的房頂上張望禾怠。 院中可真熱鬧,春花似錦芽偏、人聲如沸弦讽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捂齐。三九已至,卻和暖如春奠宜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背压真。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工滴肿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓呵俏,卻偏偏與公主長得像滔灶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子麻车,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容