国产精品无码一区二区三区太,亚洲一线产区二线产区区别,欧美A区,人妻jealousvue人妻

×

選擇虛機(jī)還是容器,先來搞懂容器和虛擬主機(jī)的區(qū)別

分類:虛機(jī)資訊 編輯:IT觀察 瀏覽量:1003
2020-09-24 16:54:54

在互聯(lián)網(wǎng)技術(shù)日益革新、產(chǎn)品快速迭代的今天,如何在提高資源使用率、提升效率的同時又兼顧互不干涉、安全隔離的原則,促使了虛擬化技術(shù)和容器技術(shù)的相繼誕生。

虛擬化技術(shù)有KVM、VMWare等并駕齊驅(qū),容器技術(shù)為docker獨(dú)領(lǐng)風(fēng)騷,Docker這幾年的迅猛發(fā)展讓容器重新流行起來,不過但很多資料里介紹Docker時都說是 "新瓶裝舊酒"。除了容器外虛擬機(jī)也是我們或多或少會接觸到的虛擬化技術(shù)。虛擬機(jī)和容器都用于創(chuàng)建隔離的虛擬環(huán)境,但是這兩種虛擬化技術(shù)有顯著的不同,今天的文章就來聊一下它們之間的區(qū)別。


虛擬機(jī)
虛擬機(jī)(VM)是共享一個服務(wù)器的物理資源的操作系統(tǒng)。它是主機(jī)硬件上的Guest,因此也被稱為Guest虛擬機(jī)。

虛擬機(jī)由幾層組成。支持虛擬化的層是hypervisor。hypervisor是一種虛擬化服務(wù)器的軟件。

虛擬機(jī)是怎么工作的
運(yùn)行應(yīng)用程序所需的一切都包含在虛擬機(jī)里--虛擬化的硬件,操作系統(tǒng)以及任何所需的二進(jìn)制文件和庫。因此,虛擬機(jī)具有自己獨(dú)立的基礎(chǔ)架構(gòu)。

虛擬機(jī)的優(yōu)勢
虛擬機(jī)可減少在服務(wù)器設(shè)備上的支出,可以利用一個物理服務(wù)器資源切分成多個獨(dú)立的虛擬機(jī)來完成許多工作。

由于只有一臺主機(jī),因此可以利用虛擬機(jī)管理程序的集中功能高效地管理所有虛擬環(huán)境。這些系統(tǒng)完全相互獨(dú)立,這意味著你可以在不同的虛擬機(jī)里安裝不同的系統(tǒng)環(huán)境。

最重要的是,虛擬機(jī)與主機(jī)操作系統(tǒng)隔離,是進(jìn)行實驗和開發(fā)應(yīng)用程序的安全場所。

虛擬機(jī)的劣勢
虛擬機(jī)可能占用主機(jī)的大量系統(tǒng)資源,虛擬機(jī)的大小為數(shù)GB。在虛擬服務(wù)器上運(yùn)行單個應(yīng)用程序意味著還要運(yùn)行Guest OS以及Guest OS運(yùn)行所需的所有硬件的虛擬副本。這樣很快就增加了很多RAM和CPU資源消耗。

遷移虛擬機(jī)上運(yùn)行的應(yīng)用程序的過程也可能很復(fù)雜,因為它始終附加在操作系統(tǒng)上。因此,必須同時遷移應(yīng)用程序和操作系統(tǒng)。同樣,在創(chuàng)建虛擬機(jī)時,系統(tǒng)管理程序會分配專用于VM的硬件資源。不過與運(yùn)行單獨(dú)的實體服務(wù)器相比,這仍然是經(jīng)濟(jì)的。

容器
容器是一個不依賴于操作系統(tǒng),運(yùn)行應(yīng)用程序的環(huán)境。它通過Linux的Namespaces和Cgroups技術(shù)對應(yīng)用程序進(jìn)程進(jìn)行隔離和限制的,Namespace的作用是隔離,它讓應(yīng)用進(jìn)程只能看到該Namespace內(nèi)的世界;而Cgroups 的作用是限制分配給進(jìn)程的宿主機(jī)資源。但對于宿主機(jī)來說,這些被“隔離”了的進(jìn)程跟其他進(jìn)程并沒有太大區(qū)別。

容器只是運(yùn)行在宿主機(jī)上的一種特殊的進(jìn)程,多個容器之間使用的還是同一個宿主機(jī)的操作系統(tǒng)內(nèi)核。

關(guān)于Namespaces和Cgroups后面再詳細(xì)介紹,這里你只知道他們是啟動隔離和限制應(yīng)用進(jìn)程的就行了。

容器是怎么工作的
Namespace的作用是隔離,它讓應(yīng)用進(jìn)程只能看到該Namespace內(nèi)的世界;而Cgroups的作用是限制,它給這個世界圍上了一圈看不見的墻。通過Mount Namespace可以修改容器進(jìn)程對自己的文件系統(tǒng) "掛載點(diǎn)"的認(rèn)知。在容器進(jìn)程啟動之前重新掛載它的整個根目錄"/"(通過pivot_root系統(tǒng)調(diào)用改變進(jìn)程的文件系統(tǒng),如果系統(tǒng)不支持,則使用chroot),而由于Mount Namespace的存在,這個掛載對宿主機(jī)不可見的。這個掛載在容器根目錄上、用來為容器進(jìn)程提供隔離后執(zhí)行環(huán)境的文件系統(tǒng),就是所謂的“容器鏡像”。它還有一個更為專業(yè)的名字,叫做:rootfs(根文件系統(tǒng))。rootfs只是一個操作系統(tǒng)所包含的文件、配置和目錄,并不包括操作系統(tǒng)內(nèi)核。

所以說,rootfs 只包括了操作系統(tǒng)的 "軀殼",并沒有包括操作系統(tǒng)的內(nèi)核。同一臺機(jī)器上的所有容器,都會共享宿主機(jī)操作系統(tǒng)的內(nèi)核。

這就意味著,如果容器里的應(yīng)用程序需要配置內(nèi)核參數(shù)、跟內(nèi)核進(jìn)行直接的交互,這些都是操作的宿主機(jī)操作系統(tǒng)的內(nèi)核,它對于該機(jī)器上的所有容器來說是一個“全局變量”,牽一發(fā)而動全身。這也是容器相比于虛擬機(jī)的主要缺陷之一:畢竟虛擬機(jī)有模擬出來的硬件機(jī)器充當(dāng)沙盒,而且每個虛擬機(jī)里還運(yùn)行著一個完整Guest OS讓應(yīng)用隨便折騰。不過由于rootfs里打包的不只是應(yīng)用,而是整個操作系統(tǒng)的文件和目錄,也就意味著,應(yīng)用以及它運(yùn)行所需要的所有依賴,都被封裝在了一起。這就賦予了容器所謂的一致性:無論在本地、端,還是在一臺任何地方的機(jī)器上,用戶只需要解壓打包好的容器鏡像,那么這個應(yīng)用運(yùn)行所需要的完整的執(zhí)行環(huán)境就能被重現(xiàn)出來。

容器的優(yōu)勢
容器占用的大小比虛擬機(jī)小很多,甚至可以小到10MB,可以輕松限制容器的內(nèi)存和CPU使用率。與部署應(yīng)用需要部署整個操作系統(tǒng)的虛擬機(jī)相比,容器非常輕巧且啟動迅速。這樣讓我們可以快速擴(kuò)展容器并添加相同的容器。

同樣,容器對于持續(xù)集成和持續(xù)部署(CI / CD)實施也是極好的選擇。他們通過在開發(fā)人員之間分發(fā)和合并鏡像來促進(jìn)協(xié)作開發(fā)。

容器的劣勢
容器仍無法提供與虛擬機(jī)相同的安全性和穩(wěn)定性。由于它們共享主機(jī)的內(nèi)核,因此不能像虛擬機(jī)一樣完全隔離。

容器是進(jìn)程級的隔離,一個容器可以通過影響宿主機(jī)內(nèi)核的穩(wěn)定性來影響其他容器。

一旦容器執(zhí)行了任務(wù),它就會關(guān)閉并刪除其中的所有數(shù)據(jù)。如果希望數(shù)據(jù)保留下來,則必須使用"數(shù)據(jù)卷"進(jìn)行保存,這需要在主機(jī)上進(jìn)行手動配置。

容器還是虛擬機(jī)
上面我們列出了容器和虛擬機(jī)各自的優(yōu)勢和劣勢,我們在因為優(yōu)勢選擇了其一后默認(rèn)就要其忍受劣勢所帶來的副作用,凡事都有兩面性沒有東西可以只有優(yōu)點(diǎn)沒缺點(diǎn)的。就容器和虛擬機(jī)來說,因為其完整的隔離和安全性虛擬機(jī)通常用于要求苛刻的應(yīng)用程序,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)以及能消耗VM大部分資源的應(yīng)用程序。而容器通常用于Web應(yīng)用,微服務(wù)。

聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)

送郵件至:operations@xinnet.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時

需注明出處:新網(wǎng)idc知識百科

免費(fèi)咨詢獲取折扣

Loading