2、Docker和虚拟机的对比
2.1 虛擬化技術
??虛擬機Virtual Machine與容器化技術(代表Docker)都是虛擬化技術,兩者的區別在于虛擬化的程度不同。
??Docker為代表的容器化技術并不是虛擬機。
??虛擬機是在物理資源層面實現的隔離,相對于虛擬機,Docker是你APP層面實現的隔離,并且省去了虛擬機操作系統(Guest OS)),從而節省了一部分的系統資源;Docker守護進程可以直接與主操作系統進行通信,為各個Docker容器分配資源;它還可以將容器與主操作系統隔離,并將各個容器互相隔離。虛擬機啟動需要數分鐘,而Docker容器可以在數毫秒內啟動。由于沒有臃腫的從操作系統,Docker可以節省大量的磁盤空間以及其他系統資源。
??虛擬機與容器docker的區別,在于vm多了一層guest OS,虛擬機的Hypervisor會對硬件資源也進行虛擬化,而容器Docker會直接使用宿主機的硬件資源。
下面我們采用形象的比喻區分兩者的隔離級別:
??服務器:比作一個大型的倉管基地,包含場地與零散的貨物——相當于各種服務器資源。
??虛擬機技術:比作倉庫,擁有獨立的空間堆放各種貨物或集裝箱,倉庫之間完全獨立——倉庫相當于各種系統,獨立的應用系統和操作系統。
??Docker:比作集裝箱,操作各種貨物的打包——將各種應用程序和他們所依賴的運行環境打包成標準的容器,容器之間隔離。
2.2 虛擬技術對比
隔離性
??在于隔離性上面,由于vm對操作系統也進行了虛擬化,隔離的更加徹底。而Docker共享宿主機的操作系統,隔離性較差。
運行效率
??由于vm的隔離操作,導致生成虛擬機的速率大大低于容器Docker生成的速度,因為Docker直接利用宿主機的系統內核。比如openstack能夠以10臺/min的速度創建虛擬機,而docker可以做到在幾秒鐘之內創建大量容器,它們的啟動速度是在數量級上的差距。
??因為虛擬機增加了一層虛擬硬件層,運行在虛擬機上的應用程序在進行數值計算時是運行在Hypervisor虛擬的CPU上的;另外一方面是由于計算程序本身的特性導致的差異。虛擬機虛擬的cpu架構不同于實際cpu架構,數值計算程序一般針對特定的cpu架構有一定的優化措施,虛擬化使這些措施作廢,甚至起到反效果。
資源利用率
??在資源利用率上虛擬機由于隔離更徹底,因此利用率也會相對較低。
??因為虛擬機增加了一層虛擬硬件層,運行在虛擬機上的應用程序在進行數值計算時是運行在Hypervisor虛擬的CPU上的;另外一方面是由于計算程序本身的特性導致的差異。虛擬機虛擬的cpu架構不同于實際cpu架構,數值計算程序一般針對特定的cpu架構有一定的優化措施,虛擬化使這些措施作廢,甚至起到反效果。比如對于本次實驗的平臺,實際的CPU架構是2塊物理CPU。
總結
以上是生活随笔為你收集整理的2、Docker和虚拟机的对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java8新特性 LocalDateTi
- 下一篇: 3分钟看懂如何升级电脑内存电脑内存如何升