開發人員應查看容器中的多道程序、多用戶分區,以及虛擬機之間的事情。所以他們必須管理容器隔離的應用程序的組件,了解容器管理工具,如Docker的作用,並解決容器發展所需的每個操作係統和容器管理相結合的具體問題。
容器(例如虛擬機)可以容納應用程序組件,允許服務器共享多個組件或組件實例。它們共享基本的操作係統服務,在某些情況下,甚至共享一些中間件服務。他們管理例如能見度和命名等元素,以減少相互作用。
由於容器是在雲計算中使用“高於”傳統的虛擬化技術,容器是跨多個雲使用的,無論是公共雲或私有雲,基本上是便攜式的,並可以任意組合。因為操作係統是共享的,容器具有低開銷和可用於細分的基礎設施即服務或虛擬機實例來充分利用這種可移植性。這很可能是大多數開發人員的容器開發應用程序針對這個可移植性任務的主要好處。
容器的工作將取決於兩個因素——操作係統的主機和管理平台的部署。雖然有Linux和其他操作係統的其他容器管理係統,最常見的平台是Linux和Docker。開發人員的第一個任務是確定容器應用程序的運行環境,確保選定的管理工具和中間件兼容所有的目標。流行的容器管理係統將適應容器運行的不同的軟件平台,但不是所有這樣的係統都可以解決所有的問題。
記錄這些工具的任何依賴關係,因為如果將應用程序移植到另一個雲計算的開發環境中,你也需要移植工具。
容器實現的一般方法是指定資源分配,隔離操作係統容器係統,並通過容器管理係統來管理容器和操作係統和資源之間的關係。在Linux中,例如,用戶信息,文件係統名稱和進程空間,網絡的操作係統和容器管理係統,如Docker管理。容器可以沒有管理工具進行部署,但它們從根本上簡化了中間件工具和網絡連接的版本控製的事情。這意味著選擇容器工具需要仔細評估,無論是開始開發還是早期應用規劃。
擁有成功的容器項目的用戶建議,建設任何容器應用程序應該認真考慮承諾容器如何承載其發展。在建立和維護容器時取得的經驗對於基於容器的應用程序很有幫助。還可以測試出應用程序生命周期管理辦法和使用開發容器的實例的可移植性,降低了實際應用程序測試的風險。
開放源碼和係統軟件和工具經常從一個中央庫加載,其中包含了所支持的軟件。還有其他來源的基於容器的圖像,但開發人員需要注意的是,他們選擇的圖像仍然支持其操作係統和容器管理係統的當前版本。這個級別的版本控製是基於容器的應用程序的關鍵,所以基準圖像版本有任何更改,一定要進行測試。測試將依賴於操作係統和容器管理係統的結合。雖然使用一個通用的容器管理工具可以在用戶主機服務器中對可以運行的應用程序進行限製,但總體上更為高效。容器及其內容是暫時性的,而最大的錯誤是新的容器開發人員可能在應用程序設計中不了解需求。所有容器應用程序應被看作是一個集合的微服務,都是無狀態的,在應用程序中沒有持久性數據存儲。用戶需要提供狀態控製和數據持久性的組件工具。使用數據驅動的智能,後台狀態控製要與持久性組件數據外置數據庫記錄一致。一定要記錄這些工具的任何依賴關係,因為如果應用程序移植到另一個雲計算的開發環境,所需要的端口,或者提供接入,這些工具都會發生改變。
最後需要考慮的是容器的應用網絡和工作流程的整合。需要對公共雲進行特殊的考慮,因為它們涉及到複雜的“私有IP”的使用。采用工具(如Docker)建立網絡並設定組件集成策略。開發人員將需要采取這兩個工具關閉需要關閉的應用程序。
容器越來越受用戶歡迎,更可能是因為直接的容器托管方式更加適合用戶的雲計算或容器的目標供應商。這些可能需要特定的容器管理工具,甚至是基於雲的開發環境。容器和虛擬機還融合了工具意義。工作人員不僅要跟蹤其所使用的工具,還要在開發應用程序時考慮整個容器空間,以確保有更好的選擇。另外,應用程序要足夠靈活,以適應容器技術的發展趨勢。容器將是應用前景的一部分,所以要更好使用它們。