Docker已經壟斷了容器技術。設計應用時注意考慮便攜性能夠幫助企業利用容器技術能提供的所有優勢。
隨著Docker應用和容器越來越流行,很多公司都開始將容器技術作為其云運維系統和應用打包的基礎。業務喜歡容器系統勝過虛擬機,因為容器能夠提供可擴展性、便攜性和高效性。和虛擬機不一樣,多個容器能夠運行在同一個內核的宿主OS上,所以額外消耗更少,性能更優。
Docker為容器內的應用提供環境,該環境在平臺間可移動。Docker是很流行的選擇,因為其簡化了應用程序部署和管理。基于其開源設計,開發人員能夠為其業務特定的獨特需求貢獻特性。Docker的一大優勢是它是廣泛使用的容器管理系統;因此,有大量可用的支持資源。
要為Docker和容器優化應用設計,需要遵守如下四點。
考慮業務和應用目標
容器介于獨占服務器和虛擬機之間。它提供高于操作系統(OS)的隔離性,但是不及虛擬機。確定使用容器的目標,以及期望得到什么結果。這個問題的答案決定了Docker應用如何設計。
使用容器的最佳理由是構建和公有云服務混合的私有云。容器在運維實踐方面幫助統一了混合云;當有統一OS平臺時,混合容器表現最好。因為所有容器都在相同內核上運行,確保OS是一致的,從而避免不兼容。為容器應序使用匹配OS版本的中間件服務。如果在不同OS上運行Docker應用,最好將它們當做獨立的Docker社區。
采用集合的觀念
當應用及其相關組件是在同一臺服務器上構建,移動和擴展時,Docker能夠發揮最大的效用。通過將應用和組件打包進一個應用程序特定的容器,用戶可以受益于Docker這方面的優勢。
打包應用以及所需組件的關鍵是理解組件工作流。通過研究組件間的工作找到最為自然的組件組的劃分,并且確定哪里的交互最頻繁。
知道容器的名字
Docker給每個容器分配了自己的命名空間和文件系統。確保其他流程能夠訪問這一功能以及共享數據。網絡連接性是其中一方面,但是其他方面控制所有應用目錄,包括域名系統(DNS)。
思考這些處于獨立子網里的組件和微服務,就像一系列運行著Docker容器的服務器。用戶需要管理代表這些服務器的URL,也需要管理Docker容器。如果使用Docker和SOA/SOAP,要確保在部署或者移動單個或多個容器時更新了服務目錄。
創建連接
云容器互相集成,通常都包含非容器化的應用組件。Docker花了很多力氣去管理容器部署,但是還不太擅長管理工作流集成。當選擇使用容器時,找出容器能夠提供了什么,并且確保能夠滿足自己的需求。Docker新用戶會遇到的最常見的問題是Docker應用訪問不了Internet或者企業網絡。Docker能夠輔助遠距離的鏈接,但是用戶得自己建立鏈接。
Docker在確保容器兼容性方面真的很有用。不幸的是,當集成跨云容器的工作流時無法保證兼容性。大部分工作流是通過目錄功能,比如DNS集成的。當部署或者移動容器時要確保去更新這些目錄。