【docker】docker容器和虛擬機的區別

聲明: docker不是虛擬機

虛擬機

在這裏插入圖片描述

從下到上理解

基礎設施:可以是個人電腦,或者服務器等
主操作系統
虛擬機管理系統:利用Hypervisor,可以再主操作系統上運行多個不同的從操作系統。
客戶機操作系統:假設運行多個相互隔離的應用,則需要使用Hypervisor啓動多個客戶機操作系統,也就是多個虛擬機。遺憾的是,每個虛擬機自帶一套虛擬的硬件和軟件系統,他們會消耗很大的cpu和內存
各種依賴:每一個客戶機操作系統都要安裝多個依賴,
應用:安裝依賴之後,就可以在多個客戶機操作系統分別運行應用了,這樣各個應用就是相互隔離的。

docker

在這裏插入圖片描述

相比較虛擬機,docker要簡潔很多,因爲我們不需要運行一個臃腫的客戶機操作系統
基礎設施
主操作系統:所有的主流的linux發行版都能運行docker。對於Macos和Windows,也有一些辦法運行docker
docker守護進程:docker守護進程取代了hypervisor,它是運行在操作系統上後臺進程,負責管理docker容器
各種依賴:對於docker,應用的所有依賴都打包在docker鏡像中,docker容器是基於docker鏡像創建的
應用。應用的源代碼與它依賴都打包在docker鏡像中,不同的應用運行在不同的docker容器中,他們是相互隔離的。

對比虛擬機與docker

docker守護進程可以直接與主操作系統進行通信,爲各個docker容器分配資源;它還可以將容器與主操作系統隔離,並將各個容器互相隔離。虛擬機啓動需要數分鐘,而docker容器沒有臃腫的操作系統,可以在數毫秒內啓動。docker可以節省大量的磁盤空間以及其他的系統資源
說了這麼多Docker的優勢,大家也沒有必要完全否定虛擬機技術,因爲兩者有不同的使用場景。虛擬機更擅長於徹底隔離整個運行環境。例如,雲服務提供商通常採用虛擬機技術隔離不同的用戶。而Docker通常用於隔離不同的應用,例如前端,後端以及數據庫。

服務器虛擬化 vs Docker

服務器好比運輸碼頭:擁有場地和各種設備(服務器硬件資源)

服務器虛擬化好比作碼頭上的倉庫:擁有獨立的空間堆放各種貨物或集裝箱

(倉庫之間完全獨立,獨立的應用系統和操作系統)

Docker比作集裝箱:各種貨物的打包

(將各種應用程序和他們所依賴的運行環境打包成標準的容器,容器之間隔離)

Docker有着小巧、遷移部署快速、運行高效等特點,但隔離性比服務器虛擬化差:不同的集裝箱屬於不同的運單(Docker上運行不同的應用實例),相互獨立(隔離)。但由同一個庫管人員管理(主機操作系統內核),因此通過庫管人員可以看到所有集裝箱的相關信息(因爲共享操作系統內核,因此相關信息會共享)。

服務器虛擬化就好比在碼頭上(物理主機及虛擬化層),建立了多個獨立的“小碼頭”—倉庫(虛擬機)。其擁有完全獨立(隔離)的空間,屬於不同的客戶(虛擬機所有者)。每個倉庫有各自的庫管人員(當前虛擬機的操作系統內核),無法管理其它倉庫。不存在信息共享的情況

因此,我們需要根據不同的應用場景和需求採用不同的方式使用Docker技術或使用服務器虛擬化技術。例如一個典型的Docker應用場景是當主機上的Docker實例屬於單一用戶的情況下,在保證安全的同時可以充分發揮Docker的技術優勢。對於隔離要求較高的環境如混合用戶環境,就可以使用服務器虛擬化技術。正則科技提供了豐富的Docker應用實例,滿足您的各種應用需求,並且支持在已經安裝了自在(Isvara)服務器虛擬化軟件的主機上同時使用服務器虛擬化技術和Docker技術提供不同技術場景。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章