什么是Docker?
什么是Docker?
Docker允許我們打包我們的應用以及其所有的依賴包到一個標準化單元中用于軟件開發。
Docker容器將一塊應用打包到一個完成的文件系統中,在該文件系統中包含了該應用要運行的所有要求:代碼,運行時,系統工具,系統庫 - 任何你安裝在服務器上的東西。這就能保證他將會以同樣的方式運行,無論它運行在什么樣的環境中。
Docker的特點
- 輕量
運行在單一機器上的容器共享相同的操作系統內核,所以他們能立即啟動,并且更有效率的使用RAM。圖片是由分層文件系統構建的,所以他們能夠共享公用文件,使磁盤使用和圖片下載更有效率。 - 開放性
Docker容器基于開源的標準,這使得容器能夠運行在一些主流的Linux發行版上和支持每個基礎設施的微軟操作系統上。 - 安全性
容器隔離每一個應用和底層的基礎設施,并且為應用提供一個保護層。
Docker和虛擬機有什么不同?
容器擁有與虛擬機相同的資源分離和分配的有點,但是一些不同的架構方法使得容器更加輕型和有效率。
虛擬機
每一個虛擬機包含應用,必要的二進制和庫,以及一個完整的用戶操作系統 - 每一個虛擬機可能需要10Gb的大小。
容器
容器包含應用和其所有的依賴包,但是與其他容器共享內核。他們在宿主操作系統中,在用戶空間以分離的進程運行。他們也不與任何特定的基礎設施綁定 - Docker容器運行在任何計算機,任何設備和任何云中。
容器怎么幫助我們構建更好的軟件?
當我們的app在Docker容器中的時候,我們不需要擔心為每一種語言設置和維持不同的環境或不同的工具。我們只需專注于創建新的也行,修復問題和交付軟件。
- 加快開發速度
減少設置開發環境浪費的時間,分拆新實例,并且復制產品代碼用于本地運行。使用Docker,我們可以非常簡單的復制生存環境并且運行任何新的運行著Docker的端點。 - 增強創造力
Docker容器的隔離能力消除了使用”認可的”語言棧和工具的擔心。開發者可以使用最好的語言和工具用于他們的應用服務,而不必擔心導致沖突。 - 消除開發的不一致性
通過打包應用以及他的配置和依賴包,并且作為一個容器交付,應用會一直按照本地設計工作,無論是在其他應用中,在測試中還是在產品中。不用再擔心安裝相同的配置到一個不同的環境中。
分享簡單,并且應用協作
Docker創建一個用于開發和系統管理的通用框架,用于在分布式應用中工作。
發布和共享內容
在Docker hub中你的團隊存儲,發布并且管理你的Docker鏡像。鏡像更新,改變和歷史被自動通過你的組織共享。
更簡單的與其他人分享您的應用
向其他人或下游的團隊交付一個或多個容器,而補習擔心不同的環境依賴導致的問題。其他團隊可以非常簡單的連接或測試你的app,而不用學習或擔心他是如何工作的。
更快的交付更多的軟件
Docker允許你動態的修改你的應用,例如添加新的功能,擴展服務來快速改變問題區域。
交付7X多
Docker用戶在他們的環境中部署了Docker之后,平均交付7X多的軟件。更頻繁的更新向您的消費者提供了更多的價值。
快速擴展
Docker容器能夠在秒級別內加速或減慢,這使得其在任何時間擴展應用服務來滿足用戶需求變得更加簡單,然后僅僅簡單的減慢這些容器滿足,當你需要資源的時候才使用這些資源。
修復問題更加簡單
Docker使得識別問題并且分離問題容器變得更加簡單,快速的回滾使其發生必要的修改,然后更新的容器到產品中。容器之間的隔離相比傳統的軟件模型使得這些改變有更少的破壞性。
現在我們就可以專注于構建app了。
來自: http://blog.csdn.net/hongbochen1223/article/details/51214450