Docker與虛擬化(虛擬機器區別)

2021-10-03 07:12:58 字數 1802 閱讀 8805

虛擬化(virtualization)技術是乙個通用的概念,在不同領域有不同的理解。在計算領域,一般指的是計算虛擬化(computing virtualization),或通常說的伺服器虛擬化。

維基百科上的定義如下:「在計算機技術中,虛擬化是一種資源管理技術,是將計算機的各種實體資源,如伺服器、網路、記憶體及儲存等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使使用者可以用比原本的組態更好的方式來應用這些資源。」

可見,虛擬化的核心是對資源的抽象,目標往往是為了在同乙個主機上同時執行多個系統或應用,從而提高系統資源的利用率,並且帶來降低成本、方便管理和容錯容災等好處。

從大類上分,虛擬化技術可分為基於硬體的虛擬化和基於軟體的虛擬化。

基於軟體的虛擬化從物件所在的層次,又可以分為應用虛擬化和平台虛擬化(通常說的虛擬機器技術即屬於這個範疇)。前者一般指的是一些模擬裝置或諸如wine這樣的軟體,後者又可以細分為幾個子類:

可見,docker以及其他容器技術都屬於作業系統虛擬化這個範疇,作業系統虛擬化最大的特點就是不需要額外的supervisor支援。docker虛擬化方式之所以有眾多優勢,跟作業系統虛擬化技術自身的設計和實現是分不開的。

傳統方式是在硬體層面實現虛擬化,需要有額外的虛擬機器管理應用和虛擬機器作業系統層。docker容器是在作業系統層面上實現虛擬化,直接復用本地主機的作業系統,因此更加輕量級。

基於linux平台上的多項開源技術,docker提供了高效、敏捷和輕量級的容器方案,並支援部署到本地環境和多種主流雲平台。可以說,docker首次為應用的開發、執行和部署提供了「一站式」的實用解決方案。

ibm developerworks**關於容器技術的描述十分準確:「容器有效地將由單個作業系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有衝突的資源使用需求。與虛擬化相比,這樣既不需要指令級模擬,也不需要即時編譯。容器可以在核心cpu本地執行指令,而不需要任何專門的解釋機制。此外,也避免了準虛擬化(para-virtualization)和系統呼叫替換中的複雜性。」

簡單地講,可以將docker容器理解為一種輕量級的沙盒(sandbox)。每個容器內執行著乙個應用,不同的容器相互隔離,容器之間也可以通過網路互相通訊。容器的建立和停止十分快速,幾乎跟建立和終止原生應用一致;另外,容器自身對系統資源的額外需求也十分有限,遠遠低於傳統虛擬機器。很多時候,甚至直接把容器當作應用本身也沒有任何問題。

那docker和虛擬機器有哪些區別呢?

作為一種輕量級的虛擬化方式,docker在執行應用上跟傳統的虛擬機器方式相比具有如下顯著優勢:

docker容器除了執行其中的應用外,基本不消耗額外的系統資源,在保證應用效能的同時,盡量減小系統開銷。傳統虛擬機器方式執行n個不同的應用就要啟用n個虛擬機器(每個虛擬機器需要單獨分配獨佔的記憶體、磁碟等資源),而docker只需要啟動n個隔離得「很薄的」容器,並將應用放進容器內即可。應用獲得的是接近原生的執行效能。

使用docker容器技術與傳統虛擬機器技術的各種特性,可見容器技術在很多應用場景下都具有巨大的優勢(如下圖所示):

參考書籍《docker技術入門與實踐(第三版)》

個人github賬號:

Docker與虛擬機器區別

1 虛擬機器vm vmware 通過hypervisor對硬體資源進行虛擬化,是在宿主機 宿主機系統的基礎上建立虛擬層 虛擬化的作業系統 虛擬化的倉庫,進行操作程式 docker直接使用硬體資源,在宿主機器 宿主機器作業系統上建立docker引擎,在引擎的基礎上操作操作程式,利用率上來看docker...

Docker與虛擬機器的區別

譯者按 各種虛擬機器技術開啟了雲計算時代 而docker,作為下一代虛擬化技術,正在改變我們開發 測試 部署應用的方式。那虛擬機器與docker究竟有何不同呢?原文 comparing virtual machines vs docker containers 譯者 fundebug 首先,大家需要...

docker與虛擬機器

首先需要明確一點 docker不是容器,它是建立容器的工具,是應用容器引擎。docker是一種輕量級的虛擬化技術,比傳統的虛擬機器效能更好。下圖是虛擬機器的體系結構 server 表示真實電腦。host os 真實電腦的作業系統,例如 windows,linux hypervisor 虛擬機器平台,...