掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:佚名 2017-10-18 09:54:38
服務器
虛擬化 對于服務器虛擬化技術(shù)來說,虛擬層為用戶提供了一個完整的虛擬機:包括內(nèi)核在內(nèi)的一個完整的系統(tǒng)鏡像。CPU虛擬化技術(shù)可以為每個用戶提供一個獨享且和其他用戶隔離的系統(tǒng)環(huán)境,虛擬層可以為每個用戶分配虛擬化后的CPU、內(nèi)存和IO設備資源。

創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目網(wǎng)站設計、網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元南潯做網(wǎng)站,已為上家服務,為南潯各地企業(yè)和個人服務,聯(lián)系電話:13518219792
時至今日
企業(yè)IT領(lǐng)域中最常見的問題之一
在于執(zhí)行開發(fā)和運維工作時
如何去建立一些獨立高效的系統(tǒng)環(huán)境
使它們在降低資源占用率、提升效率的同時
又能互不干涉,做好安全隔離
以避免各團隊間協(xié)作問題的出現(xiàn)
令企業(yè)盡快實現(xiàn)DevOps
而服務器虛擬化和容器技術(shù)的先后誕生
都是為了能切實處理這類問題
并解決多操作系統(tǒng)/應用程序堆棧間的矛盾
什么是服務器虛擬化技術(shù)
對于服務器虛擬化技術(shù)來說,虛擬層為用戶提供了一個完整的虛擬機:包括內(nèi)核在內(nèi)的一個完整的系統(tǒng)鏡像。CPU虛擬化技術(shù)可以為每個用戶提供一個獨享且和其他用戶隔離的系統(tǒng)環(huán)境,虛擬層可以為每個用戶分配虛擬化后的CPU、內(nèi)存和IO設備資源。
什么是容器技術(shù)
容器為應用程序提供了隔離的運行空間:每個容器內(nèi)都包含一個獨享的完整用戶環(huán)境空間,并且一個容器內(nèi)的變動不會影響其他容器的運行環(huán)境。此外,容器之間共享同一個系統(tǒng)內(nèi)核,這樣當同一個庫被多個容器使用時,內(nèi)存的使用效率會得到提升。
服務器虛擬化解決的核心問題是資源調(diào)配
而容器解決的核心問題是應用開發(fā)、測試和部署
那么,在實際操作中
誰是更好的滿足所有虛擬化任務的方案呢?
如果從服務器虛擬化的角度來尋找最好的環(huán)境隔離方案,那么系統(tǒng)級的虛擬化是更好的方案:和容器相比,鄰居租戶(Noisy neighbours)對系統(tǒng)的影響在虛擬化的方案下將不是一個問題。盡管現(xiàn)在很多容器都在專注于提高其隔離能力,但是虛擬機的隔離還是要優(yōu)于容器。從物理服務器過渡到虛擬服務器是一個很自然的過程,并且現(xiàn)在針對虛擬服務器的管理的生態(tài)系統(tǒng)也很完善。
大多數(shù)虛擬機都是相對獨立的,每臺虛擬機都包含自己的操作系統(tǒng)、驅(qū)動和應用程序組件。只要擁有合適的hypervisor,還可以將虛擬機遷移到其他任何虛擬化平臺當中。
基于hypervisor的虛擬機擁有完善的隔離特性,由于系統(tǒng)硬件資源完全是虛擬的,由hypervisor分配給虛擬機使用,因此bug、病毒或者入侵有可能影響一臺虛擬機,但是不會蔓延到其他虛擬機上。
與之相對比,容器的隔離性較差是因為其容器運行在物理操作系統(tǒng)之上,相互之間共享大量底層的操作系統(tǒng)內(nèi)核、庫文件以及二進制文件,在開始運行之前就已經(jīng)獲得了統(tǒng)一的底層授權(quán)(對于Linux環(huán)境來說通常是root權(quán)限)。因此,漏洞和攻擊更加有可能進入到底層的操作系統(tǒng),或者轉(zhuǎn)移到其他容器當中——潛在的傳播行為遠比最初的事件更加嚴重。
如果只是希望將應用運行的實例進行隔離,那么對于管理應用運行環(huán)境、啟動應用實例以及控制資源開銷來說,容器將是一個極為高效的工具。容器化的最大優(yōu)勢在于對于相同的硬件占用空間更小,可以比虛擬機運行更多的實例。
像Docker這一類具有代表性的容器技術(shù),其設計原則就是為了解決應用環(huán)境的修改以及應用部署的問題,并且這十分符合 DevOps理念。研發(fā)云的DCOS平臺就是以Docker技術(shù)為引擎,對持續(xù)集成流程框架進行升級,演變成容器化持續(xù)部署框架,并在能力開發(fā)平臺進行實施,實現(xiàn)了產(chǎn)品的自動化持續(xù)集成和部署??焖俸涂梢浦残允侨萜骷夹g(shù)的兩大特點。
快速
以Docker容器技術(shù)為例:普通的虛擬機在每次開機時都需要啟動一個完整的新操作系統(tǒng)實例,而Docker的容器能夠通過內(nèi)核共享的方式,共享一套托管操作系統(tǒng)。這意味著,Docker容器的啟動和停止不需要幾分鐘,只要幾百毫秒就足夠了。
更快的速度就意味著,使用Docker容器創(chuàng)建的軟件系統(tǒng)比起使用基于虛擬機的解決方案能夠?qū)崿F(xiàn)更高級別的敏捷性,即使將那些基于虛擬機的解決方案通過基于微服務的架構(gòu)進行組織也是一樣。此外,“容器化”的應用比起虛擬機和裸機的性能更好,在2014年IBM發(fā)布的一份研究報告中表明:“在幾乎所有情況下,容器都能表現(xiàn)出與虛擬機相等、或者是更好的性能。”
容器可以被大量快速復制,這是容器技術(shù)的重要優(yōu)勢之一,但是也有可能在管理員沒有注意到的情況下消耗大量計算資源。如果對一個容器化應用程序進行擴展之后忘記將其縮減回之前的規(guī)模,那么將會為企業(yè)帶來大量不必要的云計算開銷。
可移植性
在基于虛擬機的解決方案中,應用的可移植性通常來說會受到云提供商所支持的地區(qū)的限制,如果是在自托管的環(huán)境中運行企業(yè)軟件,那么可移植性就限制在數(shù)據(jù)中心內(nèi)。原因在于,不同的云提供商通常會提供不同格式的虛擬機。如果使用Packer這樣的工具,那么在不同的云服務中使用運行相同的虛擬機鏡像文件也是可以的,但需要進行許多額外的工作。雖然可行,但它也將用戶限制在一個單一的平臺中。
而容器技術(shù)非常適合用于開發(fā)微服務類型的應用程序——這種方式將復雜的應用程序拆分為基本的組成單元,每個組成單元部署在獨立的容器當中,之后將相關(guān)容器鏈接在一起,形成統(tǒng)一的應用程序??梢酝ㄟ^增加新的組成單元容器的方式對應用程序進行擴展,而不再需要對整個應用程序進行重新開發(fā)。
還是以Docker容器技術(shù)為例:工程團隊與運維團隊可以將他們的基礎(chǔ)設施擴展到多個云提供商的服務中,只要Docker的守護進程還在運行,就能夠保證應用程序的正常運行。這種將應用從云提供商中進行解耦的方式能夠給予IT團隊更大的自由度,也可以在與各個提供商之間的對沖中,提高軟件解決方案的適應性。
不過,容器之間的現(xiàn)有依賴關(guān)系可能會限其在服務器之間的可移植性。比如,位于Linux操作系統(tǒng)上的Docker容器就不能運行在當前版本的Windows Server操作系統(tǒng)上。
總結(jié)來說
全虛擬化的系統(tǒng)分配到的是獨有的一組資源
有更強的隔離性
但是更加重了對總資源的占用和依賴程度
而容器的隔離性更弱,但是它們更加輕量
即使在有限的資源下
也可以毫不費力地啟動上千個容器
或許服務器虛擬化和容器技術(shù)
都不是一種
能夠滿足所有虛擬化任務的完美方案
但從實際應用的角度來說
它們通常能在同一個數(shù)據(jù)中心中共存
因此這兩種技術(shù)可以互補并協(xié)同工作
比如,我們可以選擇
在一個容器中運行一個虛擬機
在一個虛擬機中運行一個或多個容器
這樣就能同時利用它們所帶來的各種便利

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流