劉思堯 李強(qiáng) 李斌
摘要:Docker的核心思想是利用擴(kuò)展的LXC(Linux Container)方案實(shí)現(xiàn)一種輕量級(jí)的虛擬化解決方案。Docker主要利用kernelnamespace來(lái)實(shí)現(xiàn)容器的虛擬化隔離性,保證每個(gè)虛擬機(jī)中服務(wù)的運(yùn)行環(huán)境的隔離。Docker的隔離機(jī)制降低了內(nèi)存開(kāi)銷(xiāo),保證了虛擬化實(shí)例密度。本文從Docker的工作原理出發(fā),詳細(xì)分析了Docker的虛擬化隔離技術(shù)和容器隔離方案的實(shí)現(xiàn)。
關(guān)鍵詞:Docker;LXC;虛擬化;隔離性
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.3969/j.issn.1003-6970.2015.04.025
0.引言
Docker是PaaS提供商dotCloud開(kāi)源的一個(gè)基于LXC(Linux Container)的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以將應(yīng)用程序、依賴(lài)的運(yùn)行庫(kù)文件打包并移植到一個(gè)新的容器中,然后發(fā)布到任何系統(tǒng)為L(zhǎng)inux的機(jī)器上,也可以實(shí)現(xiàn)虛擬化解決方案。容器是完全沙箱機(jī)制的實(shí)現(xiàn)方式,任意容器之間不會(huì)有任何接口,具有安全訪問(wèn)資源的特性,可以實(shí)現(xiàn)系統(tǒng)的隔離;而且容器的運(yùn)行資源開(kāi)銷(xiāo)小,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是Docker容器不依賴(lài)于任何特定需求實(shí)現(xiàn)的編程語(yǔ)言、編程框架或已打包的系統(tǒng)。Docker目前在業(yè)界非常受歡迎,包括dotCloud,Google Compute Engine和百度應(yīng)用引擎(BAE),都使用了Docker。
LXC是一種共享Kernel的操作系統(tǒng)級(jí)別的虛擬化解決方案,通過(guò)在執(zhí)行時(shí)不重復(fù)加載內(nèi)核,且虛擬容器(container)與宿主機(jī)(Host)之間共享內(nèi)核來(lái)加快啟動(dòng)速度和減少內(nèi)存消耗。Docker擴(kuò)展了LXC特性并使用高層的API,提供輕量級(jí)虛擬化解決方案來(lái)實(shí)現(xiàn)所有容器間的隔離機(jī)制。
Docker具有LXC輕量虛擬化的特點(diǎn),相比較傳統(tǒng)的虛擬化,可以做到啟動(dòng)快且占用資源少。本文首先介紹了虛擬化技術(shù),然后闡述了Docker的總體系統(tǒng)結(jié)構(gòu)以及每個(gè)功能模塊的工作原理,最后重點(diǎn)描述Docker的隔離性。
1.虛擬化技術(shù)
虛擬化技術(shù)是通過(guò)虛擬機(jī)監(jiān)視器(virtual machinemonitor,VMM)對(duì)底層硬件資源進(jìn)行管理,支持多個(gè)操作系統(tǒng)實(shí)例同時(shí)運(yùn)行。虛擬化技術(shù)的目標(biāo)是實(shí)現(xiàn)資源利用率的最大化,同時(shí)將底層的物理設(shè)備與上層操作系統(tǒng)應(yīng)用軟件分離,從而實(shí)現(xiàn)計(jì)算資源的靈活性。對(duì)于大型的實(shí)驗(yàn)或軟件設(shè)備,使用虛擬化技術(shù)能充分利用高性能的硬件資源,而且有利于設(shè)備的綜合管理和維護(hù)。虛擬化已經(jīng)在儀器儀表測(cè)量技術(shù)有運(yùn)用,在虛擬儀器、自動(dòng)化測(cè)試中,已有很多已經(jīng)虛擬化的虛擬儀器測(cè)量和實(shí)驗(yàn)環(huán)境。endprint