『壹』 怎麼用通俗易懂的話來解釋Docker(容器)技術
官網的介紹是這樣的:
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications....
其實看完這句話還是不明白究竟是啥的,下面就慢慢解釋。不過長話短說的話,把他想像成一個用了一種新穎方式實現的超輕量虛擬機,在大概效果上也是正確的。當然在實現的原理和應用上還是和VM有巨大差別的,並且專業的叫法是應用容器(Application Container)。
為啥要用容器?
那麼應用容器長什麼樣子呢,一個做好的應用容器長得就好像一個裝好了一組特定應用的虛擬機一樣。比如我現在想用MySQL那我就找個裝好MySQL的容器,運行起來,那麼我就可以使用 MySQL了。
那麼我直接裝個 MySQL不就好了,何必還需要這個容器這么詭異的概念?話是這么說,可是你要真裝MySQL的話可能要再裝一堆依賴庫,根據你的操作系統平台和版本進行設置,有時候還要從源代碼編譯報出一堆莫名其妙的錯誤,可不是這么好裝。而且萬一你機器掛了,所有的東西都要重新來,可能還要把配置在重新弄一遍。但是有了容器,你就相當於有了一個可以運行起來的虛擬機,只要你能運行容器,MySQL的配置就全省了。而且一旦你想換台機器,直接把這個容器端起來,再放到另一個機器就好了。硬體,操作系統,運行環境什麼的都不需要考慮了。
在公司中的一個很大的用途就是可以保證線下的開發環境、測試環境和線上的生產環境一致。當年在 Bai 經常碰到這樣的事情,開發把東西做好了給測試去測,一般會給一坨代碼和一個介紹上線步驟的上線單。結果代碼在測試機跑不起來,開發就跑來跑去看問題,一會兒啊這個配置文件忘了提交了,一會兒啊這個上線命令寫錯了。找到了一個 bug 提上去,開發一看,啊我怎麼又忘了把這個命令寫在上線單上了。類似的事情在上線的時候還會發生,變成啊你這個軟體的版本和我機器上的不一樣……在 Amazon 的時候,由於一個開發直接擔任上述三個職位,而且有一套自動化部署的機制所以問題會少一點,但是上線的時候大家還是膽戰心驚。
若果利用容器的話,那麼開發直接在容器里開發,提測的時候把整個容器給測試,測好了把改動改在容器里再上線就好了。通過容器,整個開發、測試和生產環境可以保持高度的一致。
此外容器也和VM一樣具有著一定的隔離性,各個容器之間的數據和內存空間相互隔離,可以保證一定的安全性。
『貳』 《Docker經典實例》pdf下載在線閱讀,求百度網盤雲資源
《Docker經典實例》([美] Sébastien Goasguen)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1VMftFwlbAVEfCvu2rLFhhQ
書名:Docker經典實例
作者:[美] Sébastien Goasguen
譯者:劉斌
豆瓣評分:7.1
出版社:人民郵電出版社
出版年份:2017-2
頁數:316
內容簡介:
本書結構明晰,示例豐富詳實,是全面實用的Docker入門教程。作者全面介紹了Docker相關各種工具和平台,涵蓋網路、鏡像管理、配置以及包括Kubernetes和Mesos在內的編排和調度生態系統,對私有雲和公有雲上部署的應用程序都給出了豐富實用的解決方案和示例。本書適合運維人員、系統管理員和開發人員閱讀。
作者簡介:
作者簡介:
Sébastien Goasguen,Citrix高級開源解決方案架構師,主要從事Apache CloudStack項目,幫助開發CloudStack生態系統。他目前是Apache CloudStack項目的副總裁,也是Apache libcloud項目管理委員會的成員。
譯者簡介:
具有10餘年軟體開發經驗,關注後台開發技術和各種編程語言。做過電子商務、金融、企業系統以及Android手機開發,寫過Delphi,也兼做系統管理員和DBA,最近在做與Docker相關的工作。
『叄』 docker容器的基本概念
1.Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器性能開銷極低。
2.Docker 的優點
Docker 是一個用於開發,交付和運行應用程序的開放平台。Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟體。藉助 Docker,您可以與管理應用程序相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
1、快速,一致地交付您的應用程序
Docker 允許開發人員使用您提供的應用程序或服務的本地容器在標准化環境中工作,從而簡化了開發的生命周期。
容器非常適合持續集成和持續交付(CI / CD)工作流程,請考慮以下示例方案:
您的開發人員在本地編寫代碼,並使用 Docker 容器與同事共享他們的工作。
他們使用 Docker 將其應用程序推送到測試環境中,並執行自動或手動測試。
當開發人員發現錯誤時,他們可以在開發環境中對其進行修復,然後將其重新部署到測試環境中,以進行測試和驗證。
測試完成後,將修補程序推送給生產環境,就像將更新的鏡像推送到生產環境一樣簡單。
2、響應式部署和擴展
Docker 是基於容器的平台,允許高度可移植的工作負載。Docker 容器可以在開發人員的本機上,數據中心的物理或虛擬機上,雲服務或混合環境中運行。
Docker 的可移植性和輕量級的特性,還可以使您輕松地完成動態管理的工作負擔,並根據業務需求指示,實時擴展或拆除應用程序和服務。
3、在同一硬體上運行更多工作負載
Docker 輕巧快速。它為基於虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,因此您可以利用更多的計算能力來實現業務目標。Docker 非常適合於高密度環境以及中小型部署,而您可以用更少的資源做更多的事情。
『肆』 《Docker從入門到實戰》epub下載在線閱讀全文,求百度網盤雲資源
《Docker從入門到實戰》(黃靖鈞)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1CD9s0KI5eNn5Dyt2dcvOyw
書名:Docker從入門到實戰
豆瓣評分:7.3
作者:黃靖鈞
出版社:機械工業出版社
出版年:2017-6
頁數:345
內容簡介
本書從Docker的相關概念與基礎知識講起,結合實際應用,通過不同開發環境的實戰例子,詳細介紹了Docker的基礎知識與進階實戰的相關內容,以引領讀者快速入門並提高。
本書共19章,分3篇。第1篇容器技術與Docker概念,涵蓋的內容有容器技術、Docker簡介、安裝Docker等。第2篇Docker基礎知識,涵蓋的內容有Docker基礎、Docker鏡像、Dockerfile文件、Docker倉庫、Docker容器、數據卷、網路管理等。第3篇Docker進階實戰,涵蓋的內容有操作系統、編排工具Compose、Web伺服器與應用、資料庫、編程語言、Docker API、私有倉庫、集群網路、Docker安全等。
本書非常適合所有對Docker感興趣的入門新手閱讀。不管是開發人員還是運維人員,都可以通過本書學習Docker的基本知識。即使不是程序員的讀者,本書同樣適合。普通用戶完全可以把Docker作為一個「好玩的工具」來使用,以體驗Docker帶來的便捷。
作者簡介
黃靖鈞
全棧開發者,熱衷開源技術。長期以來一直使用容器技術作為應用部署方案,在Docker容器實戰方面經驗豐富。有多年的大規模集群管理經驗。曾經從事PaaS與CaaS項目開發。現專注於Serverless與SDN等領域的研究。
『伍』 《Docker技術入門與實戰》epub下載在線閱讀全文,求百度網盤雲資源
《Docker 技術入門與實戰》(楊保華)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1y1ctQKwIjsZonkXck5K3bA
書名:Docker 技術入門與實戰
作者:楊保華
豆瓣評分:5.9
出版社:機械工業出版社
出版年份:2015-1
頁數:312
內容簡介:
【編輯推薦】
《Docker技術入門與實戰》是中國首部Docker著作,一線Docker先驅實戰經驗結晶,來自IBM和新浪等多位技術專家聯袂推薦!
《Docker技術入門與實戰》結合企業生產環境,深入淺出地剖析 Docker 的核心概念、應用技巧、實現原理以及生態環境,為解決各類問題提供了有價值的參考。
【內容簡介】
在雲計算時代,開發者將應用轉移到雲上已經解決了硬體管理的問題,然而軟體配置和管理相關的問題依然存在。Docker的出現正好能幫助軟體開發者開闊思路,嘗試新的軟體管理方法來解決這個問題。通過掌握Docker,開發人員便可享受先進的自動化運維理念和工具,無需運維人員介入即可順利運行於各種運行環境。
《Docker技術入門與實戰》分為三大部分:Docker入門、實戰案例和高級話題。第一部分(第1~8章)介紹Docker與虛擬化技術的基本概念,包括安裝、鏡像、容器、倉庫、數據管理等;第二部分(第9~17章)通過案例介紹Docker的應用方法,包括與各種操作系統平台、SSH服務的鏡像、Web伺服器與應用、資料庫的應用、各類編程語言的介面、私有倉庫等;第三部分(第18~21章)是一些高級話題,如Docker核心技術、安全、高級網路配置、相關項目等。
《Docker技術入門與實戰》從基本原理開始入手,深入淺出地講解Docker的構建與操作,內容系統全面,可幫助開發人員、運維人員快速部署應用。
【名人推薦】
雖然前幾年在容器方面所做的工作不多,但是從2015年起,我們計劃將工作重點放在 Docker 等容器技術上。
——楊衛華
新浪微博技術總監
本書作者之一楊保華博士在加入 IBM之後,一直從事雲計算與軟體定義網路領域的相關解決方案和核心技術的研發,熱心關注 OpenStack、Docker 等開源社區,熱衷使用開源技術,積極參與開源社區的討論並提交代碼。這使得他既能從宏觀上准確把握 Docker 技術在整個雲計算產業中的定位,又能從微觀上清晰理解技術人員所渴望獲知的核心之處。
——劉天成
IBM中國研究院雲計算運維技術研究組經理
好的IT技術總是迅速「火爆」,Docker 就是這樣。好像忽然之間,在企業一線工作的畢業生們都在談論 Docker。在IT雲化的今天,系統的規模和復雜性,呼喚著標准化的構件和自動化的管理,Docker 正是這種強烈需求的產物之一。這本書很及時,相信會成為IT工程師的寶典。
——李軍
清華大學信息技術研究院院長
本書圍繞著鏡像、容器、倉庫三個部分,從實踐的角度出發,講解了 Docker 的安裝、配置、使用的方式。在本書的後面幾個章節,也介紹了許多 Docker 的實現細節和工作原理。總體而言,本書從實際的案例入手,由淺至深,循序漸進,內容相當豐富。
——王燦
浙江大學計算機學院副教授
Docker 在公司多個項目中正式上線,目前運行穩定,在系統的關鍵節點使用 Docker 容器集群來快速擴展計算能力效果顯著。本書作者之一戴王劍前期的充分調研和測試功不可沒。
——徐勛業
浙江中正智能科技有限公司副總裁
本書詳細介紹了 Docker 的發展歷史、作用、部署方法和應用案例,文筆流暢,通俗易懂,對促進開源軟體和虛擬化技術發展很有意義,對加強信息化在各行業的應用有較大的參考價值。
——楊傳斌
浙江師范大學計算機學院教授
作者簡介:
楊保華 博士,清華大學畢業,現為 IBM 中國研究院研究員。主要從事數據中心網路解決方案的研發與部署,技術方向包括雲計算、軟體定義網路(SDN)、網路安全等,是國內較早從事 SDN 和網路虛擬化相關技術的推廣者,同時也是 DockerPool 開源社區的發起人之一。
戴王劍 資深架構師,多年來一直從事計算機網路、伺服器架構設計,負責過多個省級項目的架構設計。熱衷開源事業,是 DockerPool 開源社區的發起人之一。
曹亞侖 85後,全棧 Web 開發者,擅長並專注於 SaaS 系統架構設計與研發, 興趣為 PaaS 和智能可穿戴設備。出版有譯著《Arino 無線感測器網路實踐指南》以及開源圖書《程序員禪修指南》。
『陸』 如何使用docker+jenkins實現自動化集成
Docker 介紹
Docker
號稱是下一代的虛擬機,它在啟動和創建速度、性能、移植性等方面均優於傳統虛擬機。Docker 是 PaaS 提供商 dotCloud
開源的一個基於 LXC 的高級容器引擎。它能夠讓開發者打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux
機器上,也可以實現虛擬化。目前,通過 Boot2Docker 已能使 Docker 運行在 Windows 和 OS X 中。Docker
容器完全使用沙箱機制,相互之間沒有任何介面。Docker 幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,
他們不依賴於任何語言、框架或系統。
Docker 在其網站上明確地提到的 Docker 的典型應用場景如下:
對應用進行自動打包和部署
創建輕量、私有的 PAAS 環境
自動化測試和持續整合與部署
部署和擴展 Web 應用、資料庫和後端服務
在自動化測試領域,Docker 大有取代傳統虛擬機技術的趨勢,原因如下:
自動化測試依賴的是測試所需要的應用,而並非整個操作系統。因此,傳統的虛擬機技術存在資源浪費。
Docker 構建於 LXC 之上。藉助 LXC 輕量級的特性,相比於目前的虛擬機技術,Docker 啟動更快、資源佔用更小。
Docker 比虛擬機輕量、靈活,便於管理。
Docker 標准化的構建方法 (Dockerfile) 和良好的 REST API,使得自動測試和持續集成/部署能夠很好的集成進來。
回頁首
Sahi 介紹
Sahi 是一個開源的 Web UI 自動化測試框架。盡管它的知名度不及 Selenium,用戶群也不及 Selenium 龐大,但它確有它獨特的魅力,例如:
基於上下文的頁面元素識別機制。
隱式頁面載入響應等待機制。
良好的瀏覽器支持。
優秀的跨瀏覽器錄制回放調試工具 Sahi Controller。
這些特性都大大地加快了自動化測試腳本的開發速度,並降低了維護成本。
Sahi
通過一個用 Java 編寫的代理伺服器,將用戶的腳本轉換為 JavaScript 後注入往返的 HTTP
請求及響應中,從而驅動瀏覽器事件。編程語言方面,除 Sahi 腳本(其本質是一個 JavaScript 庫)以外,還支持 Java 和
Ruby。Sahi 有開源和收費兩個版本。雖然收費版本提供了很多開源版本不具備的高級特性,不過開源版本已經能夠滿足大部分的功能要求。點此查看開源版本與收費版本的差異。點此查看Sahi 與其他 Web 自動化測試框架的對比。
回頁首
Jenkins 介紹
Jenkins
是一種開源的基於 Java 開發的持續集成工具,前身稱作 Hudson。Jenkins
提供了用於監控持續重復工作的軟體平台。它支持豐富的插件,用戶可以按照需求進行選擇安裝和配置,以實現生成執行狀態表格,自動部署、更新自動化測試包等
高級功能。本文將要介紹 Jenkins 的 Docker 插件,它能夠動態地創建 Docker 容器作為 Jenkins Slave
節點,並在執行任務後,自動關閉容器。另外,它還支持一些額外功能,比如當構建任務成功完成後自動將容器保存為鏡像、自動將鏡像上傳到資源庫等。
回頁首
實例演示
該實例演示如何製作一個運行 Sahi 的鏡像以及如何在 Jenkins 上配置 Docker 插件以運行 Sahi 測試腳本。
准備 Docker 鏡像
本實例需要准備三個鏡像:一個運行 Jenkins,一個運行 Subversion,另外一個運行 Sahi。
首先,製作運行 Sahi 的鏡像。Docker Hub 是一個用於分享 Docker 鏡像的資源庫。目前,該資源庫還沒有運行 Sahi 的鏡像,所以必須自己創建 Dockerfile 來構建鏡像。下圖是用來製作 Sahi 鏡像的目錄。
圖 1. 製作 Sahi 鏡像的目錄
下圖是 Dockerfile 的文件內容。
圖 2. Dockerfile文件內容
整個過程大體分為八個步驟:
指定基礎鏡像
我們使用的是 evarga/jenkins-slave。該鏡像基於 Ubuntu,安裝了 SSH 服務,並創建了用戶 Jenkins。
替換系統默認更新源。把系統更新源替換為 163 的,後面的軟體安裝速度會比較快一些。
安裝必要的軟體(不包括 Oracle Java 和
Sahi):Firefox, Unzip 以及 Xvfb。刪除 Open JDK 是為了後面安裝 Oracle Java 做准備。Firefox
不用多說,因為該鏡像用於 Web UI 自動化測試,所以安裝了最新版本的 Firefox。安裝 Unzip 是因為後面安裝 Sahi
需要用到它。Xvfb(X virtual framebuffer)是一個 X11
顯示伺服器的實現。它不是將圖形在屏幕上顯示出來,而是在內存中運行所有的圖形操作。對客戶端來說,除了無法看到真正的圖形顯示,沒有其他分別。一般稱這
種運行方式為 headless。
安裝 Oracle Java 8。理論上 Sahi 應當也支持 Open JDK,所以安裝 Oracle Java 不是必須的。
安裝 Sahi。上傳了 zip 文件後,用 Unzip 解壓,Sahi 是基於 Java 的,所以解壓後即已安裝好 Sahi。之後,替換了幾個文件,它們的作用如下:
Userdata.properties
userdata.properties 中有個屬性叫
proxy_alert.disabled,默認值為 false。用戶第一次啟動 Sahi Dashboard
的時候,會彈出一個如下圖所示的對話框。用戶勾選了「Do no show this message again」並點擊 Continue
按鈕之後,Sahi 修改該屬性值為 true。之後就不會在跳出這個對話框了。由於用 headless 的方式運行 Sahi
無法點擊該對話框,所以必須事先用一個已將該屬性設置為 true 的文件替換 Sahi 默認的 userdata.properties。
圖 3. Sahi 代理問題對話框
sahi_example_com
這是一個證書文件。用戶第一次在 Sahi Dashboard
中打開 Firefox 時的頁面如下圖所示。用戶需要點擊 SSL Manager 鏈接手動接受 SSL 證書。此時,文件
sahi_example_com 被生成到 userdata/certs 目錄下。之後,就不需要再進行該操作了。所以,復制的
sahi_example_com 目的也是為了自動完成這步需要在圖形界面下才能完成的操作。
圖 4. Sahi 啟動頁
圖 5. SSLManager 的非信任連接頁面
browser_types.xml
替換該文件是為了使 Sahi 以 headless
的方式工作。在該文件中,事先添加了一個名字為 firefox-xvfb 的瀏覽器配置信息。之後,測試腳本就可以指向該瀏覽器運行。具體配置 Sahi 和 Xvfb 的步驟參考。
添加 init.sh 文件
init.sh 文件用於啟動 Xvfb 和 Sahi。其內容如下。
圖 6. init.sh 文件內容
「sleep 5」是因為 Sahi 啟動需要一點時間,若立即運行測試腳本會導致失敗。
修改許可權
最終運行的容器是作為 Jenkins Slave 節點用
Jenkins 用戶運行,因此將整個/usr/local 目錄及子目錄的所有人修改為 Jenkins,並給 Shell
文件添加執行許可權。Jenkins 用戶是在基礎鏡像 evarga/jenkins-slave 中創建的,所以在這個 Dockerfile
里沒有創建 Jenkins 用戶的語句。
指定默認執行的命令
CMD ["/usr/sbin/sshd","-D"] – 該語句令鏡像默認啟動 SSH 服務。事實上,這條語句也可以不添加,因為 evarga/jenkins-slave 的 Dockerfile 中已包含該語句。
一
切就緒之後,在該目錄中執行「docker build -t shenrui/sahi –rm=true」。命令成功執行後,通過「docker
images」應當可以查看到名為「shenrui/sahi」的鏡像。該鏡像已經上傳到 Docker Hub,有需要的讀者可以自行拉取。
Sahi
鏡像構建好之後,接下來准備 Jenkins 容器。Docker Hub 上已有官方的 Jenkins 鏡像,直接用命令「docker pull
jenkins」拉取。在 Docker 主機上,創建一個目錄(例如,/data/jenkins_home),並修改許可權(chmod
777)以便 Jenkins 容器能讀寫該目錄,然後用命令「docker run -d -t --name myjenkins -p
8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins」啟動。此時,打開
http://<Docker Host IP>:8080 應當可以看到 Jenkins 的管理頁面。
同樣地,直接拉取 Docker Hub 的 Subversion
的鏡像(docker pull bsboiko/subversion)。不過,還需要做進一步的配置。步驟如下:
用命令「docker run -i -t bsboiko/subversion /bin/bash」以交互的方式啟動 Subversion 容器。
在容器中創建目錄 /var/svn/repos(mkdir -p
/var/svn/repos),並基於該目錄創建 Subversion 資源庫(svnadmin create
/var/svn/repos)。
在資源庫目錄下的 svnserve.conf
文件中刪除「password-db = passwd」前面的注釋符 #,並在 passwd 文件中添加一行「shenrui =
password」。
用命令「docker commit <container id> mysvn」把上面所做的修改保存下來創建一個新鏡像 mysvn。
最後,用命令「docker run -t -d -p
3690:3690 --name mysvn mysvn svnserve -d --foreground -r
/var/svn/repos」啟動 mysvn 容器。啟動時,添加容器到主機的埠映射「-p 3690:3690」以便之後直接通過主機 IP
提交測試腳本。
至此,Docker 上有兩個正在運行的容器(docker ps),名字分別是 myjenkins 和 mysvn。
『柒』 誰可以簡單介紹一下docker到底是干什麼用的
1)測試:Docker 很適合用於測試發布,將 Docker 封裝後可以直接提供給測試人員進行運行,不再需要測試人員與運維、開發進行配合,進行環境搭建與部署。
2)測試數據分離:在測試中,經常由於測試場景變換,需要修改依賴的資料庫數據或者清空變動 memcache、Redis 中的緩存數據。Docker 相較於傳統的虛擬機,更輕量與方便。可以很容易的將這些數據分離到不同的鏡像中,根據不同需要隨時進行切換。
3)開發:開發人員共同使用同一個 Docker 鏡像,同時修改的源代碼都被掛載到本地磁碟。不再因為環境的不同而造成的不同程序行為而傷透腦筋,同時新人到崗時也能迅速建立開發、編譯環境。
4)PaaS 雲服務:Docker 可以支持命令行封裝與編程,通過自動載入與服務自發現,可以很方便的將封裝於 Docker 鏡像中的服務擴展成雲服務。類似像 Doc 轉換預覽這樣的服務封裝於鏡像中,根據業務請求的情況隨時增加和減少容器的運行數量,隨需應變。
『捌』 可以在docker容器里跑windows么 / 網路技術編程
不可以!
Docker並不是全能的,設計之初也不是KVM之類虛擬化手段的替代品,簡單總結幾點:
1.Docker是基於Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用
2.LXC是基於cgroup等linux kernel功能的,因此container的guest系統只能是linux base的
3.隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運行庫
4.網路管理相對簡單,主要是基於namespace隔離
5.cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按內存收費)
6.docker對disk的管理比較有限
7.container隨著用戶進程的停止而銷毀,container中的log等用戶數據不便收集
針對1-2,有windows base應用的需求的基本可以pass了; 3-5主要是看用戶的需求,到底是需要一個container還是一個VM, 同時也決定了docker作為 IaaS 不太可行。
『玖』 什麼是 docker 容器技術
Docker是什麼?
簡單得來說,Docker是一個由GO語言寫的程序運行的「容器」(Linux containers, LXCs); 目前雲服務的基石是操作系統級別的隔離,在同一台物理伺服器上虛擬出多個主機。Docker則實現了一種應用程序級別的隔離; 它改變我們基本的開發、操作單元,由直接操作虛擬主機(VM),轉換到操作程序運行的「容器」上來。
Docker是為開發者和系統管理員設計的,用來發布和運行分布式應用程序的一個開放性平台。由兩部分組成:
Docker Engine: 一個攜帶型、輕量級的運行環境和包管理器。(注* 單OS vs 單線程,是不是跟NodeJS特別像?)
Docker Hub: 為創建自動化工作流和分享應用創建的雲服務組成。(注* 雲端鏡像/包管理 vs npm包管理,是不是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式發布到 2014年6月Docker 1.0 正式發布,經歷了15個月。 雖然發展歷程很短,但Docker正在有越來越流行的趨勢。
其實Container技術並非Docker的創新,HeroKu, NodeJitsu 等雲服務商都採用了類似這種輕量級的虛擬化技術,但Docker是第一個將這這種Container技術大規模開源並被社區廣泛接受的。
好的部分
Docker相對於VM虛擬機的優勢十分明顯,那就是輕量和高性能和便捷性, 以下部分摘自:KVM and Docker LXC Benchmarking with OpenStack
快
運行時的性能可以獲取極大提升(經典的案例是提升97%)
管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。
敏捷
像虛擬機一樣敏捷,而且會更便宜,在bare metal(裸機)上布署像點個按鈕一樣簡單。
靈活
將應用和系統「容器化」,不添加額外的操作系統,
輕量
你會擁有足夠的「操作系統」,僅需添加或減小鏡像即可。在一台伺服器上可以布署100~1000個Containers容器。
便宜
開源的,免費的,低成本的。由現代Linux內核支持並驅動。注* 輕量的Container必定可以在一個物理機上開啟更多「容器」,註定比VMs要便宜。
生態系統
正在越來越受歡迎,只需要看一看Google的趨勢就知道了,docker or LXC.
還有不計其數的社區和第三方應用。
雲支持
不計其數的雲服務提供創建和管理Linux容器框架。