Docker和虛擬機的區(qū)別及說明
Docker可以讓一個應用在任何操作系統(tǒng)中非常方便的運行。而以前我們接觸的虛擬機,也能在一個操作系統(tǒng)中,運行另外一個操作系統(tǒng),保護系統(tǒng)中的任何應用。
兩者有什么差異呢?
Doker的實現原理
Docker把應用及其所需要的依賴、函數庫、甚至操作系統(tǒng)函數庫也一起打包,那這樣一來,應用直接運行時,可以直接調用本地函數庫,然后與Linux內核進行交互,這樣它就不再關心操作系統(tǒng)是什么系統(tǒng)了,于是就能實現跨系統(tǒng)的一種運行了。
虛擬機(virtual machine)
用到了一種名為Hypervisor的技術,這種技術可以在操作系統(tǒng)中模擬一個計算機的各種各樣的硬件設備(比如CPU、內存等等),然后在這個模擬出的計算機上運行另一個操作系統(tǒng),比如在 Windows 系統(tǒng)里面運行 Ubuntu 系統(tǒng),這樣就可以運行任意的Ubuntu應用了。
既然操作系統(tǒng)都能重新安裝,那我們就可以在它上邊去安裝任意適合的依賴、函數庫、以及應用,這樣也實現了跨系統(tǒng)的應用部署。
對比來看
我們的虛擬機它是在一個系統(tǒng)里裝了另外的一個系統(tǒng),所以當應用執(zhí)行時它會以為自己在一臺真實的電腦上,因此它會去調用這個內置的操作系統(tǒng),然后它再與Hypervisor進行交互,然后再把信息傳遞給了我們的web操作系統(tǒng),web操作系統(tǒng)再去調用計算機硬件,于是我們的應用執(zhí)行就完成了,此時它經過了層層的傳遞,所以它的性能相對來講是比較差一點的。
Docker應用在執(zhí)行時,是直接調用操作系統(tǒng)內核的,所以它的執(zhí)行性能要比虛擬機的執(zhí)行性能要好很多。
并且Docker僅僅是封裝應用程序執(zhí)行需要的一些簡單的函數庫和依賴,并沒有模擬完整的操作系統(tǒng),所以體積往往比較小,最小的一個docker容器可能只有幾MB,而大一點就是幾十MB,幾百MB;而虛擬機動不動就要幾個g甚至幾百g的內存空間,因此體積占用是比較大的。
并且虛擬機啟動的時候需要啟動虛擬的計算機的操作系統(tǒng),等于把這個計算機重啟了一遍,然后再去啟動虛擬操作系統(tǒng)上面的應用。
而Docker就是直接在操作系統(tǒng)上把一個進程啟動起來了,所以它的啟動速度也是非常的快。
總結:Docker和虛擬機的差異
- docker是一個系統(tǒng)進程,因為它是直接與操作系統(tǒng)內核做交互;虛擬機是在操作系統(tǒng)中的操作系統(tǒng)
- docker體積小、啟動速度快、性能好;虛擬機體積大、啟動速度慢、性能一般
因此,現在企業(yè)做服務部署,基本上都會去選擇用docker,而不會選擇用虛擬機。
特性 | Docker | 虛擬機 |
---|---|---|
性能 | 接近原生 | 性能較差 |
硬盤占用 | 一般為 MB | 一般為 GB |
啟動 | 秒級 | 分鐘級 |
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
CentOS7 禁用Transparent Huge Pages的實現方法
這篇文章主要介紹了 CentOS7 禁用Transparent Huge Pages的實現方法的相關資料,需要的朋友可以參考下2016-11-11SpringCloud基于Docker和Docker-Compose的項目部署過程
本文介紹了如何卸載舊版本Docker、更新系統(tǒng)、安裝Docker及其依賴,并設置國內鏡像源以加快下載速度,詳細說明了如何安裝Docker Compose、配置鏡像加速器,并展示了如何使用Docker Compose部署SpringCloud項目,提供了更新和重啟容器的方法2024-10-10docker獲取Let''s Encrypt永久免費SSL證書的方法
在本篇文章里小編給大家分享了一篇關于docker獲取Let's Encrypt永久免費SSL證書的方法,以后需要的朋友們可以參考下。2021-01-01基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境的詳細教程
K8S全稱是Kubernetes,是一個全新的基于容器技術的分布式架構領先方案,這篇文章主要介紹了基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境(環(huán)境搭建篇),對docker K8S持續(xù)集成交付環(huán)境相關知識感興趣的朋友一起看看吧2021-05-05