天天看點

《第一本Docker書(修訂版)》——1.4 Docker與配置管理

本節書摘來自異步社群《第一本docker書(修訂版)》一書中的第1章,第1.4節,作者:【澳】james turnbull(詹姆斯•特恩布爾)著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

從docker項目公布以來,已經有大量關于“哪些配置管理工具适用于docker”的讨論,如puppet、chef。docker包含一套鏡像建構和鏡像管理的解決方案。現代配置管理工具的原動力之一就是“黃金鏡像”模型[8]。然而,使用黃金鏡像的結果就是充斥了大量、無管理狀态的鏡像:已部署或未部署的複雜鏡像數量龐大,版本狀态混亂不堪。随着鏡像的使用,不确定性飛速增長,環境中的混亂程度急劇膨脹。鏡像本身也變得越來越笨重。最終不得不手動修正鏡像中不符合設計和難以管理的配置層,因為底層的鏡像缺乏适當的靈活性。

與傳統的鏡像模型相比,docker就顯得輕量多了:鏡像是分層的,可以對其進行迅速的疊代。資料表明,docker的這些特性确實能夠減輕許多傳統鏡像管理中的麻煩。現在還難以确定docker是否可以完全取代配置管理工具,但是從幂等性和内省性來看,docker确實能夠獲得非常好的效果。docker本身還是需要在主機上進行安裝、管理和部署的。而主機也需要被管理起來。這樣,docker容器需要編配、管理和部署,也經常需要與外部服務和工具進行通信,而這些恰恰是配置管理工具所擅長的。

docker一個顯著的特點就是,對不同的主控端、應用程式和服務,可能會表現出不同的特性與架構(或者确切地說,docker本就是被設計成這樣的):docker可以是短生命周期的,但也可以用于恒定的環境,可以用一次即銷毀,也可以提供持久的服務。這些行為并不會給docker增加複雜性,也不會和配置管理工具的需求産生重合。基于這些行為,我們基本不需要擔心管理狀态的持久性,也不必太擔心狀态的複雜性,因為容器的生命周期往往比較短,而且重建容器狀态的代價通常也比傳統的狀态修複要低。

然而,并非所有的基礎設施都具備這樣的“特性”。在未來的一段時間内,docker這種理想化的工作負載可能會與傳統的基礎裝置部署共存一段時間。長期運作的主機和實體裝置上運作的主機在很多組織中仍具有不可替代的地位。由于多樣化的管理需求,以及管理docker自身的需求,在絕大多數組織中,docker和配置管理工具可能都需要部署。