虛擬機和容器比較


容器相比虛擬機更輕量

一 虛擬機

image

 

二 容器

image

 

一、本質上的區別:

image

VM(VMware)在宿主機器、宿主機器操作系統的基礎上創建虛擬層、虛擬化的操作系統、虛擬化的倉庫,然后再安裝應用;

        Container(Docker容器),在宿主機器、宿主機器操作系統上創建Docker引擎,在引擎的基礎上再安裝應用。

        那么問題來了,沒有操作系統,怎么運行程序?

        可以在Docker中創建一個ubuntu的鏡像文件,這樣就能將ubuntu系統集成到Docker中,運行的應用就都是ubuntu的應用。

二、使用上的區別:
image

Size:  

1.虛擬機中ubuntu所占內存:

image

2.Docker容器中ubuntu鏡像文件所占內存

image

Startup:
        Docker在宿主機器的操作系統上創建Docker引擎,直接在宿主主機的操作系統上調用硬件資源,而不是虛擬化操作系統和硬件資源,所以操作速度快。

        這個其實安裝一個ubuntu的虛擬機和拉取一個Docker的ubuntu鏡像文件,運行一下就知道了,區別很明顯,虛擬機開一下大概得2分多鍾,而Docker只需要2秒鍾。

Integration:
        Docker的集成性要比VM好。這個並沒有深入研究,不過可以提供一個博客,這里面關於Docker集成的內容寫的很好。

https://blog.csdn.net/karamos/article/details/80124166

三、Docker特點
1)上手快

用戶只需要幾分鍾,就可以把自己的程序“Docker 化”。Docker 依賴於“寫時復制” (copy-on-write)模型,使修改應用程序也非常迅速,可以說達到“隨心所致,代碼即改” 的境界。

隨后,就可以創建容器來運行應用程序了。大多數 Docker 容器只需要不到 1 秒中即可 啟動。由於去除了管理程序的開銷,Docker 容器擁有很高的性能,同時同一台宿主機中也 可以運行更多的容器,使用戶盡可能的充分利用系統資源。

2)職責的邏輯分類

使用 Docker,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如 何管理容器。Docker 設計的目的就是要加強開發人員寫代碼的開發環境與應用程序要部署 的生產環境一致性。從而降低那種“開發時一切正常,肯定是運維的問題(測試環境都是正 常的,上線后出了問題就歸結為肯定是運維的問題)”

3)快速高效的開發生命周期

Docker 的目標之一就是縮短代碼從開發、測試到部署、上線運行的周期,讓你的應用 程序具備可移植性,易於構建,並易於協作。(通俗一點說,Docker 就像一個盒子,里面 可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件 件的取。)

4)鼓勵使用面向服務的架構

Docker 還鼓勵面向服務的體系結構和微服務架構。Docker 推薦單個容器只運行一個應 用程序或進程,這樣就形成了一個分布式的應用程序模型,在這種模型下,應用程序或者服 務都可以表示為一系列內部互聯的容器,從而使分布式部署應用程序,擴展或調試應用程序 都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程 序)
---------------------
作者:JingZhunBianCheng
來源:CSDN
原文:https://blog.csdn.net/jingzhunbiancheng/article/details/80994909
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM