docker與kvm區別


 

什么是Docker

Docker是一個虛擬環境中的容器,可以將你的可執行文件,配置文件及一切其他你需要的文件一起打包到這個容器中,並發布和應用到任意平台中

docker比如一個集裝箱,在一艘大船上,可以把貨物規整的擺放起來,各種各樣的貨物備集裝箱標准化,各個集裝箱之間不會影響,只要這些貨物在集裝箱里

封裝的好好的,那我們就可以用另外一艘船把他們運走

docker生命周期

鏡像:可以理解為一堆靜態的文件

容器:是鏡像run起來之后的一個實例

倉庫:鏡像保存的地方

docker六大優點:

更高效的利用系統資源:容器不需要進行硬件虛擬運行完整操作系統的額外開銷。無論執行速度,內存損耗或文件的存儲速度都比傳統虛擬機更高效

更快速的啟動時間:由於直接運行於宿主的內核,無序啟動完整的操作系統,可以做到秒級,毫秒級的啟動時間,大大節約了開發,測試,部署的時間

一致的運行環境:由於開發環境,測試環境,生產環境不一致,導致bug並未在開發中發現,而docker的景象提供了內核外完整的運行環境,確保環境一致

持續交付和部署:持續集成系統進行集成測試,而運維人員可以直接在生產環境中快速部署改鏡像,

更輕松的遷移:docker可以在很多平台上運行,無論是物理機,虛擬機,公有雲,私有雲,筆記本。器運行結果是一致的

更輕松的維護和擴展:docker使用的分層存儲以及鏡像技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基礎鏡像進一步擴張也變得非常簡單

docker對比傳統虛擬機

 

 

 

什么是kvm?

KVM是一個開源的系統虛擬化模塊,使用的是liunx自身的調度器管理,先對xen,其核心代碼少,kvm是基於硬件的完全虛擬化,使用kvm把多台物理機虛擬化后,組成一個大的虛擬化

資源池,方便用戶從資源池中安分配計算能力,提升資源的使用效率,保證多用戶資源之間的隔離性,安全性

kvm概念:

在kvm技術中,應用到兩個東西,qenu和kvm,kvm負責cpu虛擬化,qemu是模擬IO設備(網卡,磁盤)kvm加上qemu之后實現真正的服務器虛擬化

一.kvm功能概述:

內存管理:KVM依賴Linux內核進行內存管理。上面提到,一個KVM客戶機就是一個普通的Linux進程,所以,客戶機的“物理內存”就是宿主機內核管理的普通進程的虛擬內存。進而,Linux內存管理的機制、通過mmap的進程間共享內存,統統可以應用到客戶機內存管理上

 

二.存儲和客戶機鏡像的格式:

這是qemu的功能特性

1.KVM能夠使用Linux支持的任何存儲來存儲虛擬機鏡像,包括具有IDE、SCSI和 SATA的本地磁盤,網絡附加存儲NAS或NFS,或者支持iSCSI和光線通道的SAN。多路徑I/O可用於改進存儲吞吐量和提供冗余。

2.允許客戶機鏡像在多個宿主機之間共享或使用邏輯卷共享。磁盤鏡像支持稀疏文件形式,支持通過僅在虛擬機需要時分配存儲空間,而不是提前分配整個存儲空間,這就提高了存儲利用率

 

三 實時遷移

kvm支持實時遷移,這提供了在宿主機之間轉移正在運行的客戶機而不中斷服務的能力。實時遷移對用戶是透明的,客戶機保持打開,網絡連接保持活動,用戶應用程序也持續運行,但客戶機轉移到了一個新的宿主機上,(除了實時的遷移,kvm還支持快照)存儲並能在以后恢復它

 

四 設備驅動程序

KVM支持混合虛擬化,其中半虛擬化的驅動程序安裝在客戶機操作系統中,允許虛擬機使用優化的 I/O 接口而不使用模擬的設備,從而為網絡和塊設備提供高性能的 I/O。

 

五 性能和可伸縮性

kvm繼承了linux的性能伸縮性,kvm在cpu,內存,網絡,磁盤等性能表現很棒,大多大歐洲原生系統的95%以上,對於宿主機可以同時運行客戶機數量,軟件無上限

這意味着,在復雜,在垃圾的應用程序都可以在kvm虛擬機上跑起來

 

對比:


 

KVM   docker
基礎設施 它可以是你的個人電腦,數據中心的服務器,或者是雲主機 基礎設施 配好yum原直接install
虛擬機管理系統 可以在主操作系統之上運行多個不同的從操作(管理)系統(openstack等) 主操作系統 所有主流的Linux發行版都可以運行Docker。對於MacOS和Windows,也有一些辦法”運行”Docker。
客戶機操作系統 假設你需要運行3個相互隔離的應用,則需要使用Hypervisor啟動3個客戶機操作系統,也就是3個虛擬機。這些虛擬機都非常大,也許有700MB,這就意味着它們將占用2.1GB的磁盤空間。更糟糕的是,它們還會消耗很多CPU和內存。 Docker守護進程 docker守護進程它是運行在操作系統之上的后台進程,負責管理Docker容器。
各種依賴 一個客戶機操作系統都需要安裝許多依賴。如果使用其他編程語言,比如Python或者,都會需要安裝對應的依賴庫。等等 各種依賴 對於Docker,應用的所有依賴都打包在Docker鏡像中,Docker容器是基於Docker鏡像創建的。
應用 安裝依賴之后,就可以在各個客戶機操作系統分別運行應用了,這樣各個應用就是相互隔離的 應用 應用的源代碼與它的依賴都打包在Docker鏡像中,不同的應用需要不同的Docker鏡像。不同的應用運行在不同的Docker容器中,它們是相互隔離的。

 

 

總結

在應用方面docker  (經得起折騰,部署速度快),在系統方面kvm( 宿主隔離,也支持快照)


免責聲明!

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



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