自從容器技術(shù)出現(xiàn)以后,關(guān)于容器將取代虛擬機(jī)的言論就時(shí)有出現(xiàn), 并且愈演愈烈。有人說(shuō)容器技術(shù)就是下一場(chǎng)革命,未來(lái)會(huì)將虛擬機(jī)替換掉,但是從調(diào)研來(lái)看,事實(shí)并非如此。容器和虛擬機(jī)就像照鏡子一樣,各有所長(zhǎng),互利互補(bǔ)。
容器虛擬化以“補(bǔ)”代“搏”
容器的興起是建立在云計(jì)算之上的。云計(jì)算之大火之后,企業(yè)要做的第一件事就是將自己的業(yè)務(wù)部署在云上,容器給企業(yè)帶來(lái)希望。企業(yè)用戶第一次發(fā)現(xiàn),有一種標(biāo)準(zhǔn)化的方式能夠?qū)⒆约旱臉I(yè)務(wù)通過(guò)應(yīng)用的方式存到云上,以前用戶是直接面對(duì)資源,現(xiàn)在是面對(duì)應(yīng)用,應(yīng)用會(huì)產(chǎn)生資源,所以說(shuō)容器對(duì)于企業(yè)用戶而言有非常大的吸引力。
除此之外,在運(yùn)行的過(guò)程中,虛擬化相對(duì)來(lái)說(shuō)肯定是有損耗,但是因其有一個(gè)完整的硬件隔離,所以隔離性跟安全性都非常好。容器和虛擬化相比是幾乎沒(méi)什么損耗,輕量,這一點(diǎn)對(duì)于很多企業(yè)服務(wù)來(lái)講,會(huì)比虛擬化更有優(yōu)勢(shì)。但是容器也有缺點(diǎn)就是不能有太多依賴。
和虛擬機(jī)相比,容器擁有更高的資源使用效率,因?yàn)樗⒉恍枰獮槊總€(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng)——實(shí)例規(guī)模更小、創(chuàng)建和遷移速度也更快。這意味相比于虛擬機(jī),單個(gè)操作系統(tǒng)能夠承載更多的容器。
云提供商十分熱衷于容器技術(shù),因?yàn)樵谙嗤挠布O(shè)備當(dāng)中,可以部署數(shù)量更多的容器實(shí)例。然而,單個(gè)操作系統(tǒng)有可能引起影響所有相關(guān)實(shí)例的單點(diǎn)事故。比如,惡意軟件或者主機(jī)操作系統(tǒng)崩潰可能禁用或者影響所有容器。此外,容器易于遷移,但是只能被遷移到具有兼容操作系統(tǒng)內(nèi)核的其他服務(wù)器當(dāng)中,這樣會(huì)無(wú)形中減少遷移選擇。
從實(shí)際應(yīng)用的角度來(lái)說(shuō),容器和虛擬機(jī)可以在同一個(gè)數(shù)據(jù)中心當(dāng)中共存,因此這兩種技術(shù)被認(rèn)為是互補(bǔ)的,為現(xiàn)代應(yīng)用程序架構(gòu)師和數(shù)據(jù)中心管理員添加了可用工具集,通過(guò)不同的方式為應(yīng)用負(fù)載提供支持。
那么,企業(yè)究竟該如何在容器和虛擬機(jī)間做出抉擇呢?Scott S. Lowe,一位虛擬機(jī)設(shè)計(jì)工程師,建議考察“工作范圍”。換言之,如果需要運(yùn)行單個(gè)應(yīng)用程序的多個(gè)副本,比如MySQL, 那么需要的就是容器。如果需要靈活地運(yùn)行多個(gè)復(fù)雜應(yīng)用,那么需要的就是虛擬機(jī)。