什么是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級別 |
性能 | 接近原生 | 弱於原生 |
系統支持數 | 上千個容器 | 幾十個虛擬機 |