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