劉思堯 李強 李斌



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