什麼是Docker?
Docker是一個開源專案,誕生於2013年初,最初是dotCloud公司內部的一個業務專案。它基於Google公司推出的Go語言實現。專案後來加入了Linux基金會,遵從Apache2.0協議,程式碼在GitHub上進行維護。
Docker自開源後收到廣泛的關注和討論,以至於dotCloud公司後來改名為Docker Inc。Redhat已經在其RHEL6.5中集中支援Docker;Google也在其PaaS產品中廣泛應用。
Docker專案的目標是實現輕量級的作業系統虛擬化解決方案。Docker的基礎是Linux容器(LXC)等技術。
在LXC的基礎上Docker進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。使用者操作Docker的容器就像操作一個快速輕量級的虛擬機器一樣簡單。
下面的圖片比較了Docker和傳統虛擬化方式的不同支援,可見容器是在作業系統層面上實現虛擬化,直接複用本地主機的作業系統,而傳統方式則是在硬體層面實現。
為什麼使用Docker?
作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。
首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機器方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時執行數千個 Docker 容器。
容器除了執行其中應用外,基本不消耗額外的系統資源,使得應用的效能很高,同時系統的開銷儘量小。 傳統虛擬機器方式執行 10 個不同的應用就要起 10 個虛擬機器,而Docker 只需要啟動 10 個隔離的應用即可。
具體說來,Docker 在如下幾個方面具有較大的優勢:
更快速的交付和部署
對開發和運維(dev&op)人員來說,最希望的就是一次建立或配置,可以在任意地方正常執行。
更高效的虛擬化
開發者可以使用一個標準的映象來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來 部署程式碼。 Docker 可以快速建立容器,快速迭代應用程式,並讓整個過程全程可見,使團隊中的其他成員 更容易理解應用程式是如何建立和工作的。 Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約 開發、測試、部署的時間。
更輕鬆的遷移和擴充套件
Docker 容器幾乎可以在任意的平臺上執行,包括物理機、虛擬機器、公有云、私有云、個人電腦、伺服器 等。 這種相容性可以讓使用者把一個應用程式從一個平臺直接遷移到另外一個。
更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和 更新,從而實現自動化並且高效的管理。
對比傳統虛擬機器總結
特性 | 容器 | 虛擬機器 |
---|---|---|
啟動速度 | 秒級 | 分鐘級 |
硬碟使用 | MB級別 | GB級別 |
效能 | 接近原生 | 弱於原生 |
系統支援數 | 上千個容器 | 幾十個虛擬機器 |