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