Docker與虛擬機區(qū)別詳解(圖文全面總結(jié))
Docker
Docker 是一個開源的容器化平臺,能夠?qū)?yīng)用程序、及其依賴環(huán)境打包成輕量級、可移植的容器。
為什么Docker如此之風靡?原因很簡單:因為Docker能很好的解決在不同環(huán)境中運行一致性,并且占用的資源還少,而且還快。
所以說,好的東西,就應(yīng)該得到更多人的喜歡,因為Docker確確實實解決了我們平常開發(fā)和運維的問題。
比如:在如今的微服務(wù)架構(gòu)中,我們可以將應(yīng)用程序拆分成多個獨立的服務(wù),每個服務(wù)運行在獨立的容器中。
這樣,不僅方便開發(fā)、測試、和部署,而且Docker 容器可以在不同的操作系統(tǒng)和平臺上運行,確??缙脚_的一致性。
圖片
多個容器可以在同一臺計算機上運行,并與其他容器共享其OS內(nèi)核,每個容器在用戶空間中作為隔離的進程運行。
虛擬機
虛擬機,全程是Virtual Machine,簡稱 “虛擬機VM”。
虛擬機,是一種利用軟件模擬的計算機系統(tǒng),它能夠在物理硬件的基礎(chǔ)上,運行多個虛擬計算機。
如下圖所示:
圖片
虛擬機,是基于物理機(宿主機)上運行的獨立計算環(huán)境,擁有獨立的操作系統(tǒng)、應(yīng)用程序、和資源。
比如:一臺服務(wù)器,可以模擬出多臺“虛擬機”。
這個時候,虛擬機運行在一個物理主機上,它的硬件資源(如:CPU、內(nèi)存、磁盤...等),由宿主機提供并被虛擬化。
虛擬機的管理工具,常見的包括 :VMware、Hyper-V... 等,主要用于創(chuàng)建/和管理虛擬機。
雖然,看上去是多了幾臺“服務(wù)器”,但是多個虛擬機的操作系統(tǒng),是共享同一個硬件環(huán)境中并存運行。
雖然虛擬機、和容器都是虛擬化技術(shù),但它們的運行方式、和用途有所不同,下面我重點談?wù)剝烧叩膮^(qū)別@mikechen
Docker和虛擬機區(qū)別
圖片
虛擬機更重,Docker相對輕量級
這是Docker和虛擬機最大的區(qū)別,我把它放到第一位。
首先,虛擬機提供完整的操作系統(tǒng)、和硬件環(huán)境,適用于需要隔離的多操作系統(tǒng)環(huán)境。
虛擬機由于每個虛擬機,都需要攜帶一個完整的操作系統(tǒng)(OS),這點非常的重要。
所以,采用虛擬機了,即使應(yīng)用程序本身很小,整體體積也會因為操作系統(tǒng)的存在而變得龐大。
所以,這使得虛擬機不僅占用大量的存儲空間,還在啟動時需要加載整個操作系統(tǒng),導(dǎo)致其啟動時間較長、運行時的資源占用較高。
這也是為什么?Docker虛擬化技術(shù)風靡的最重要的原因。
Docker則通過共享宿主機操作系統(tǒng)的內(nèi)核,避免了為每個應(yīng)用程序分配一個獨立的操作系統(tǒng)。
這樣,每個 Docker 容器只包含:應(yīng)用程序、及其依賴,減少了鏡像的體積,并且啟動速度更快,運行更加輕巧。
這也是 Docker 相比虛擬機最大的優(yōu)勢之一,尤其在微服務(wù)和容器化應(yīng)用場景下顯得非常有效。
虛擬機啟動慢,Docker啟動快
剛才我已經(jīng)談到了兩者最大的區(qū)別,就談到了虛擬機需要攜帶操作系統(tǒng)(OS)。
所以,虛擬機的啟動時間較長,這就很正常了,因為:虛擬機,需要啟動完整的操作系統(tǒng)。
而Docker容器,不需要啟動操作系統(tǒng),因此具有更快的響應(yīng)速度。
虛擬機占用資源多,Docker占用資源小
由于虛擬機,需要運行一個獨立的操作系統(tǒng),因此資源開銷較大。
比如:虛擬機需要占用較多的 CPU、內(nèi)存、磁盤空間,并且每個虛擬機都有固定的資源分配。
所以,一臺服務(wù)器一般也就不能虛擬很多“服務(wù)器”。
而Docker 容器,共享宿主機的操作系統(tǒng)內(nèi)核,不需要額外的操作系統(tǒng)開銷。
所以,占用資源更小,是“進程”級別的,所以資源利用率更高。
虛擬機適用重量級隔離,容器輕量級隔離
當然,說了這么多,也不是說虛擬機一無是處,關(guān)鍵是用對應(yīng)用場景。
比如:虛擬機就適用于需要強隔離的多操作系統(tǒng)環(huán)境,常用于運行不同的操作系統(tǒng)、測試環(huán)境、或需要高安全性的場景。
而Docker容器,更適用于:微服務(wù)架構(gòu)、持續(xù)集成與交付(CI/CD)、高密度部署、以及輕量級的隔離場景。















 
 
 
















 
 
 
 