-
1 # IT小明
-
2 # 夢中有你12094026
docker是虛擬化軟體執行環境。
虛擬機器是虛擬化硬體。
層次不同。
虛擬機器更消耗資源。但帶來的是一個完整的可以不同於宿主機的作業系統。因為和宿主機作業系統不共享任何東西(包括硬體,核心,動態庫,環境變數等),它的隔離性更好。
docker更輕量級,共享使用宿主機的硬體和核心,資源佔用更少。它在宿主機核心基礎上虛擬化了一個不同於宿主機的軟體執行環境,比如動態庫,環境變數等。可以說,docker和宿主機之間除了核心共享,其它都可以不同。
-
3 # 小逗電競
Docker悄無聲息的來到我們身邊,正在改變我們的開發、測試、部署應用的方式,那麼,到底Docker和虛擬機器VM有什麼區別,我們透過一個圖,再配上簡明扼要的文字就很容易理解兩者之間的區別。
首先要明確:Docker是一個開源的應用容器引擎,而VM是一個完整的作業系統。
1、使用VM執行多個相互隔離的應用
解釋:
INFRASTRUCTURE:基礎設施,直觀的理解成個人計算機。HOST OPERATIONG SYSTEM:個人計算機上的作業系統,可能是MacOS、Windowos或者Linux。HYPERVISOR:個人計算機作業系統上的虛擬機器管理系統,可以在主作業系統上執行多個從作業系統。GUEST OS:虛擬機器。可以看到,APP #1、APP #2、APP #3如果要獨立執行,相互隔離,則需要安裝三個作業系統。如果一個虛擬作業系統按1G算,總共需要佔3G的儲存空間,更槽糕的是,光執行這三個作業系統就要耗費很大的記憶體和CPU。
2、使用Docker執行多個相互隔離的應用
DOCKER DAEMON:Docker守護程序,負責管理Docker容器。
Docker執行在主作業系統之上,APP #1、APP #2、APP #3在Docker中是完全隔離的、相經獨立的容器。跟VM相比,省去了龐大的作業系統,耗費硬體資源較少。
除了以上架構上的差異之外,VM和Docker在啟動時間上也有著很大的差距,VM啟動大概需要2分鐘的時間,而Docker啟動則只需2秒。
隨著網際網路的發展,Docker的應用會越來越廣,Build once,run anywhere,一次構建,到處執行。
回覆列表
docker容器:Docker 容器是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app)。幾乎沒有效能開銷,可以很容易地在機器和資料中心中執行。最重要的是,他們不依賴於任何語言、框架包括系統。
虛擬機器:虛擬機器(Virtual Machine)指透過軟體模擬的具有完整硬體系統功能的、執行在一個完全隔離環境中的完整計算機系統。虛擬系統透過生成現有作業系統的全新虛擬映象,它具有真實windows系統完全一樣的功能,進入虛擬系統後,所有操作都是在這個全新的獨立的虛擬系統裡面進行,可以獨立安裝執行軟體,儲存資料,擁有自己的獨立桌面,不會對真正的系統產生任何影響 ,而且具有能夠在現有系統與虛擬映象之間靈活切換的一類作業系統。虛擬系統和傳統的虛擬機器(Parallels Desktop ,Vmware,VirtualBox,Virtual pc)不同在於:虛擬系統不會降低電腦的效能,啟動虛擬系統不需要像啟動windows系統那樣耗費時間,執行程式更加方便快捷;虛擬系統只能模擬和現有作業系統相同的環境,而虛擬機器則可以模擬出其他種類的作業系統;而且虛擬機器需要模擬底層的硬體指令,所以在應用程式執行速度上比虛擬系統慢得多。對比虛擬機器與DockerDocker守護程序可以直接與主作業系統進行通訊,為各個Docker容器分配資源;它還可以將容器與主作業系統隔離,並將各個容器互相隔離。虛擬機器啟動需要數分鐘,而Docker容器可以在數毫秒內啟動。由於沒有臃腫的從作業系統,Docker可以節省大量的磁碟空間以及其他系統資源。說了這麼多Docker的優勢,大家也沒有必要完全否定虛擬機器技術,因為兩者有不同的使用場景。虛擬機器更擅長於徹底隔離整個執行環境。例如,雲服務提供商通常採用虛擬機器技術隔離不同的使用者。而Docker通常用於隔離不同的應用,例如前端,後端以及資料庫。