上期的文章已經詳細介紹過什麼是「容器」(Container),並指出它與虛擬化技術的差異在那裡。有了基本的觀念之後,本文將繼續說明說明與Docker容器相關的工具以及專有名詞,讓大家對於Docker容器技術有更進一步的了解。
之後便可推送到自己帳號下的映像檔儲存庫,執行「docker push philipz/ubuntu」。若要上傳到私有Registry,則須命名為YOUR_REGISTRY_URL,執行「docker tag 192.168.0.100/philipz/ubuntu」或「docker tag philipz.azurecr.io/ubuntu」,一樣輸入「docker push 192.168.0.100/philipz/ubuntu」,就可上傳到192.168.0.100或Azure代管的私有映像檔儲存庫,如圖7所示。關於容器整合版本控制的使用情境和方式,接下來會介紹。
|
▲圖7 Docker使用流程圖。 |
使用容器的好處有那些
筆者認為企業導入Docker的關鍵,在於軟體開發流程,而非技術或系統層面,如何讓容器融入整個商業邏輯程式的開發過程,自動化Docker Compose的整合測試,不須耗時撰寫mock、stub和fake程式,直接啟動容器迅速建構執行環境,節省開發測試時間。
請參考圖8之比較,在建置成本上兩種方法是一樣,但在程式開發上卻無須額外撰寫Mock等測試程式,這樣的做法應該會改變TDD(Test Driven Development,測試驅動開發)的思維,最後自動部署到測試環境,最終由主管決策或系統人員搬遷到正式營運環境,這便是Docker在DevOps上的殺手級應用。
|
▲圖8 原測試方法和Docker Compose方式比較圖。 |
上述的Docker Compose測試方法可以透過CI(Continuous Integration,持續整合)生產線來自動化執行,如圖9所示,開發人員交付程式、Dockerfile和測試腳本到版本控制儲存庫,觸發CI生產線,執行「docker build」建置應用程式映像檔,結合Docker Compose建置出測試環境的系統架構環境,利用測試腳本驗證程式在整體架構的正確性,輕易地就可完成端點到端點測試(End to End Testing)或整合測試(Integration Testing),最後可部署到Swarm叢集或Kubernetes叢集。
|
▲圖9 CI生產線與自動化開發流程。 |
因個人參加微軟ChatBot競賽,且入圍決賽,過程皆使用容器來開發,結合Azure Container Registry服務,自動部署到Azure PaaS,因此容器非常適合整合CI/CD(Continuous Integration/Continuous Delivery,持續整合/持續交付),透過Pipeline將整個過程自動化,自動上線,一人就可輕鬆開發出Web應用程式或ChatBot聊天機器人。
以上是Docker Engine的基本使用和優點,之後再介紹Docker Volume容器資料存放和Docker Network容器網路設定。
<本文作者:Philipz(鄭淳尹),Docker/Moby.Taipei社群共同發起人,曾任宏碁eDC維運工程師,玉山銀行資訊處專員,現為臺北榮民總醫院資訊工程師,系統維護及開發設計超過15年。開源技術愛好者,陸續在COSCUP開源人年會、Container Summit研討會台灣微軟開發者大會、群益期貨和永豐金證券等分享資訊技術,並在多間大學資工系擔任Docker容器技術講師。現任微軟MVP,並翻譯審閱多本容器技術書籍。>