傳統虛擬化技術的體系架構:

可見,我們在宿主機的操作系統上,可安裝了多個虛擬機,而在每個虛擬機中,通過虛擬化技術,實現了一個虛擬操作系統,隨后,就可以在該虛擬操作系統上,安裝自己所需的應用程序了。這一切看似非常簡單,但其中的技術細節是相當高深莫測的,大神級人物都不一定說得清楚。
凡是使用過虛擬機的同學,應該都知道,啟動虛擬機就像啟動一台計算機,初始化過程是相當慢的,我們需要等很久,才能看到登錄界面。一旦虛擬機啟動以后,就可以與宿主機建立網絡連接,確保虛擬機與宿主機之間是互聯互通的。不同的虛擬機之間卻是相互隔離的,也就是說,彼此並不知道對方的存在,但每個虛擬機占用的都是宿主機的硬件與網絡資源。
我們再來對比一下 Docker 技術的體系架構吧:

可見,在宿主機的操作系統上,有一個 Docker 服務在運行(或者稱為“Docker 引擎”),在此服務上,我們可開啟多個 Docker 容器,而每個 Docker 容器中可運行自己所需的應用程序,Docker 容器之間也是相互隔離的,同樣地,都是占用的宿主機的硬件與網絡資源。
Docker 容器相對於虛擬機而言,除了在技術實現上完全不一樣以外,啟動速度較虛擬機而言有本質的飛躍,啟動一個容器只在眨眼瞬間。不管是虛擬機還是 Docker 容器,它們都是為了隔離應用程序的運行環境,節省我們的硬件資源,為我們開發人員提供福利。
我們再來看看 Docker 的 Logo 吧:

很明顯,這是一只鯨魚,它托着許多集裝箱。我們可以把宿主機可當做這只鯨魚,把相互隔離的容器可看成集裝箱,每個集裝箱中都包含自己的應用程序。這 Logo 簡直的太形象了!
需要強調的是,筆者並非否定虛擬化技術,而是想通過本文讓更多的讀者了解如何使用 Docker 技術,讓大家知道除了虛擬化技術以外,還有另一種替代技術,也能讓應用程序隔離起來。
