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