獨具魅力的Docker作為一門新技術,它的出現有可能引起其所在領域大范圍的波動甚至是重新洗牌。根據業內專業人士的看法,不論如何,Docker的出現,已經成為云服務市場中一枚極具意義的戰略性棋子。從2013年開始在國內發力,一直到2015年的野蠻擴張逐漸發展到至今,Docker到底是何方神圣,能有如此大的威力?
一、Docker是什么
Docker 是一個開源的應用容器引擎,基于 Go 語言并遵從 Apache2.0 協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
二、Docker的應用場景
- Web 應用的自動化打包和發布。
- 自動化測試和持續集成、發布。
- 在服務型環境中部署和調整數據庫或其他的后臺應用。
- 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。
三、Docker 的優點
Docker 是一個用于開發,交付和運行應用程序的開放平臺。Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。借助 Docker,您可以與管理應用程序相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
1、快速,一致地交付您的應用程序
Docker 允許開發人員使用您提供的應用程序或服務的本地容器在標準化環境中工作,從而簡化了開發的生命周期。
容器非常適合持續集成和持續交付(CI / CD)工作流程,請考慮以下示例方案:
- 您的開發人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作。
- 他們使用 Docker 將其應用程序推送到測試環境中,并執行自動或手動測試。
- 當開發人員發現錯誤時,他們可以在開發環境中對其進行修復,然后將其重新部署到測試環境中,以進行測試和驗證。
- 測試完成后,將修補程序推送給生產環境,就像將更新的鏡像推送到生產環境一樣簡單。
2、響應式部署和擴展
Docker 是基于容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發人員的本機上,數據中心的物理或虛擬機上,云服務上或混合環境中運行。
Docker 的可移植性和輕量級的特性,還可以使您輕松地完成動態管理的工作負擔,并根據業務需求指示,實時擴展或拆除應用程序和服務。
3、在同一硬件上運行更多工作負載
Docker 輕巧快速。它為基于虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,因此您可以利用更多的計算能力來實現業務目標。Docker 非常適合于高密度環境以及中小型部署,而您可以用更少的資源做更多的事情。
四、容器與虛擬機的區別
為什么要和虛擬機做比較,用過虛擬機的同學應該知道,虛擬機也是將主機資源分配出一部分,進行隔離,提供另一個系統環境。
容器
容器是應用層的抽象,它將代碼和依賴關系打包在一起。多個容器可以在同一臺機器上運行,并與其他容器共享操作系統內核,每個容器在用戶空間中作為獨立進程運行。容器占用的空間比VM少(容器映像的大小通常為幾十MB),可以處理更多的應用程序,并且需要更少的VM和操作系統。
虛擬機
虛擬機(VM)是物理硬件的抽象,將一臺服務器轉變為多臺服務器。管理程序允許多臺VM在單臺機器上運行。每個VM都包含操作系統的完整副本,應用程序,必要的二進制文件和庫 - 占用數十GB。虛擬機也可能很慢啟動。