虛拟化技術已經(jīng)改變了現代計算方式,它能(néng)夠提升系統資源使用效率、消除應用程序和底層硬件之間的依賴關系,同時(shí)加強負載的可以移植性和安全性,但是hypervisor和虛拟機隻是部署虛拟負載的方式之一。作爲一種(zhǒng)能(néng)夠替代傳統虛拟化技術的解決方案,容器虛拟化技術憑借其高效性和可靠性得到了快速發(fā)展,它能(néng)夠提供新的特性,并且幫助數據中心專家解決新的顧慮。
容器和虛拟機之間的主要區别在于虛拟化層的位置和操作系統資源的使用方式。虛拟機依賴于hypervisor,其通常被(bèi)安裝在“裸金屬”系統硬件之上,這(zhè)導緻hypervisor在某些方面(miàn)被(bèi)認爲是一種(zhǒng)操作系統。一旦 hypervisor安裝完成(chéng), 就(jiù)可以從系統可用計算資源當中分配虛拟機實例了,每台虛拟機都(dōu)能(néng)夠獲得唯一的操作系統和負載(應用程序)。
通常,第一台虛拟機都(dōu)將(jiāng)會(huì)被(bèi)用來運行系統管理程序,比如Microsoft System Center。而之後(hòu)的虛拟機可能(néng)包含其他企業負載,比如數據庫、ERP、CRM、郵件服務器、媒體服務器、web服務器或者其他業務應用。虛拟機之間是完全隔離的——沒(méi)有任何一台虛拟機知道(dào)(或者依賴)相同系統當中的另外一台虛拟機的存在——惡意軟件、應用程序崩潰和其他問題隻能(néng)影響一台虛拟機。虛拟機從一個虛拟系統被(bèi)移動到另外一個當中,而不用考慮系統硬件和操作系統等因素。
而容器環境的工作方式則有所不同。對(duì)于容器環境來說(shuō),需要首先安裝主機操作系統,之後(hòu)將(jiāng)容器層(比如LXC或libcontainer)安裝在主機操作系統(通常是Linux變種(zhǒng))之上。在安裝完容器層之後(hòu),就(jiù)可以從系統可用計算資源當中分配容器實例了,并且企業應用可以被(bèi)部署在容器當中。但是,每個容器化應用都(dōu)會(huì)共享相同的操作系統(單個主機操作系統)。
相比于虛拟機,容器擁有更高的資源使用效率,因爲它并不需要爲每個應用分配單獨的操作系統——實例規模更小、創建和遷移速度也更快。這(zhè)意味相比于虛拟機,單個操作系統能(néng)夠承載更多的容器。雲提供商十分熱衷于容器技術,因爲在相同的硬件設備當中,可以部署數量更多的容器實例。然而,單個操作系統有可能(néng)引起(qǐ)影響所有相關實例的單點事(shì)故。比如,惡意軟件或者主機操作系統崩潰可能(néng)禁用或者影響所有容器。此外,容器易于遷移,但是隻能(néng)被(bèi)遷移到具有兼容操作系統内核的其他服務器當中,這(zhè)樣(yàng)會(huì)無形中減少遷移選擇。
從實際應用的角度來說(shuō),容器和虛拟機可以在同一個數據中心當中共存,因此這(zhè)兩(liǎng)種(zhǒng)技術被(bèi)認爲是互補的——爲現代應用程序架構師和數據中心管理員添加了可用工具集,通過(guò)不同的方式爲應用負載提供支持。