區別:1、啟動速度上,docker是秒級的,kvm是分鐘級的;2、與kvm相比,Docker應用的性能高,同時系統的開銷小;3、保存狀態上,Docker比kvm更為輕便和低成本;4、硬盤使用上,Docker以MB為單位,kvm以GB為單位。
本教程操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
Docker簡介
Docker?項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。
在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。
Docker與KVM(傳統虛擬機)對比
作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。
1、Docker容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。
2、容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。
3、?虛擬化技術依賴物理CPU和內存,是硬件級別的;而docker構建在操作系統上,利用操作系統的containerization技術,所以docker甚至可以在虛擬機上運行。
4、虛擬化系統一般都是指操作系統鏡像,比較復雜,稱為“系統”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。
5、傳統的虛擬化技術使用快照來保存狀態;而docker在保存狀態上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。
6、傳統的虛擬化技術在構建系統的時候較為復雜,需要大量的人力;而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程序開發人員可以通過發布Dockfile來指導系統環境和依賴,這樣對于持續交付十分有利。
7、當然KVM對比于容器也有一個比較大的優勢就是可以使用不同的操作系統或內核。所以,舉例說,你可以使用微軟Azure,同時運行Windows Server2012的實例和SUSE Linux企業級服務器的實例。至于Docker,所有容器都必須使用同樣的操作系統和內核。
對比總結
特性 |
Docker容器 |
KVM虛擬機 |
啟動 |
秒級 |
分鐘級 |
硬盤使用 |
一般為 MB |
一般為 GB |
性能 |
接近原生 |
弱于 |
系統支持量 |
單機支持上千個容器 |
一般幾十個 |
推薦學習:《docker視頻教程》