Docker 是一個開源項目,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘項目。它基於 Google 公司推出的 Go 語言實現。 項目後來加入了 Linux 基金會,聽從了 Apache 2.0 協議,項目代碼在 GitHub 上 進行維護。Docker 自開源後受到普遍的關注和討論,以致於 dotCloud 公司後來都更名爲 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中普遍應用。Docker 項目的目標是實現 輕量級的操做系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不須要去關心容器的管理,使得操做更爲簡便。用戶操做 Docker 的容器就像操 做一個快速輕量級的虛擬機同樣簡單。Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植 的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不 會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。git
在雲時代,開發者建立的應用必需要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的限制; 同時必須知足「任什麼時候間任何地點」可獲取可以使用的特色。所以,開發者們須要一種新型的建立分佈式應用程序 的方式,快速分發部署,而這正是 Docker 所可以提供的最大優點。Docker 提供了一種更爲聰明的方式,經過 容器來打包應用、解耦應用和運行平臺。這意味着遷移的時候,只須要在新的服務器上啓動須要的容器就能夠了, 不管新舊服務器是不是同一類別的平臺。這無疑幫助咱們節約了大量的寶貴時間,並下降部署過程出現問題的風 險。docker
對於開發和運維人員來講,最求之不得的效果可能就是一次建立和配置,以後能夠在任意地方、任意時間讓 應用正常運行,而 Docker 偏偏能夠實現這一中級目標。具體來講,在開發和運維過程當中,Docker 具備如下幾 個方面的優點:
·······更快的交付和部署:使用 Docker,開發人員可使用鏡像來快速構建一套標準的開發環境;開發完之 後,測試和運維人員能夠直接使用徹底相同的環境來部署代碼。只要是開發測試過的代碼,就能夠確保 在生產環境無縫運行。Docker 能夠快速建立和刪除容器,實現快速迭代,節約開發、測試及部署的時間
·······更高效的利用資源:運行 Docker 容器不須要額外的虛擬化管理程序的支持,Docker 是內核級的虛擬化,能夠實現更高的性能,同時對資源的額外需求很低,與傳統的虛擬機方式相比,Docker 的性能要 提升 1 ~ 2 個數量級。
·······更輕鬆的遷移和擴展:Docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私 有云、我的電腦等等,同時支持主流的操做系統發行版本。這種兼容性能讓用戶能夠在不一樣的平臺之間 輕鬆的遷移應用。
·······更輕鬆的管理和更新:使用 Dockerfile,只須要小小的配置修改,就能夠替代以往大量的更新工做。所 有的修改都以增量的方式被分發和更新,從而實現自動化而且高效的容器管理。ubuntu
做爲一種輕量級的虛擬化方式,Docker 在運行應用上跟傳統的虛擬機的方式相比具備以下顯著優點:安全
1.Docker 容器啓動很快,啓動和中止能夠實現秒級,相比傳統的虛擬機方式(分鐘級)要快速不少。 2.Docker 容器對系統資源需求不多,一臺主機上能夠同時運行數千個 Docker 容器。 3.Docker 經過相似 git 設計理念的操做來方便用戶獲取、分發和更新應用鏡像,存儲複用,增量更新。 3.Docker 經過 Dockerfile 支持靈活的自動化建立和部署機制,能夠提升工做效率,並標準化流程。
特性 | 容器 | 虛擬機 |
---|---|---|
啓動速度 | 秒級 | 分鐘級 |
性能 | 接近原生 | 較好 |
內存 | MB級 | GB級 |
硬盤適應 | MB級 | GB級 |
運行密度 | 單臺主機支持上千個 | 單臺主機支持幾個 |
隔離性 | 安全隔離 | 徹底隔離 |
遷移 | 優秀 | 通常 |
Docker 以及其餘容器技術,都屬於操做系統虛擬化範疇,操做系統細膩化最大的特色就是不須要額外的 supervisor 支持。Docker 虛擬化方式之因此有衆多優點,跟操做系統虛擬化技術自身的設計和實現分不開
bash
Docker 中有三個核心概念:鏡像、容器和倉庫。所以,準確把握這三大概念對於掌握 Docker 技術尤其重 要。服務器