1. 程式人生 > >docker優勢

docker優勢

釋出管理

和傳統的釋出流程相比,Docker最大的好處是不需要考慮外部依賴,利用容器的自包含的特點,我們可以將釋出回滾流程標準化和產品化。而傳統的釋出和回滾,需要casebycase去針對不同應用做升級回滾的方案。要做到基於Docker的釋出,映象的生成必須堅持自動化,否則會發現升級比傳統的方法更麻煩。因此在現實中我們也發現很多企業將程式碼目錄放到主機目錄對映到容器內,這樣做破壞了Docker的自包含特性,解決的辦法是堅持應用映象更新自動化。

日誌管理

由於容器是無狀態的,所以儲存在容器內的日誌會隨著容器的銷燬而消失。stdout/stderr型別的日誌,可通過logspout轉發到syslog中心來收集。列印到檔案的支援,比如accesslog,需要將日誌儲存到外部的Volume,並在Docker主機上使用logstash收集轉發。

配置管理

容器裡沒有CM agent,無法接收CM指令。CM執行到Host上也無法管理容器中的檔案,如果手工修改容器內的配置,那新建立的容器仍然是舊的。配置大體上分為兩種型別,一種是服務之間的連線資訊,這種配置建議考慮使用服務發現系統,也可以使用一些更加傳統的方法,比如通過環境變數來協調作開發和生產環境的配置差異。一種是一般的配置檔案引數,配置檔案和Dockerfile應該一起儲存到一個Git倉庫,修改後自動build更新映象。

網路管理

目前Docker支援的網路包括Host網路、NAT網路、物理網橋和網路虛擬化。Host網路中容器和主機共享網路名稱空間,不同容器需要做好埠規劃,防止埠衝突。Nat網路是基於四層代理以及NAT技術,依賴portmap,進出都需要轉發,效能低,主機上需要做好埠規劃,容易搞混。物理網橋方案,和傳統虛擬機器的網橋沒有區別,適合容器數量有限且相對靜止的場景。網路虛擬化是基於隧道的overlay網路,目前開源方案有SocketPlane、Weave、Flannel,適合數量大,動態建立銷燬容器的場景。