譯者注:使用Docker能真正改善傳統(tǒng)的應(yīng)用發(fā)布管理中遇到的問(wèn)題么?以下是譯文:
自從2013年發(fā)布以來(lái),Docker已經(jīng)成為每一個(gè)操作管理者眼中的最愛。如果你一直與世隔絕,這里恰恰是你錯(cuò)過(guò)的部分。
Docker是在一個(gè)操作環(huán)境地址空間中的分區(qū)能力。通過(guò)允許分區(qū)直接使用宿主的操作系統(tǒng),即使操作系統(tǒng)位于分區(qū)之外(分區(qū)在這里稱為容器),啟動(dòng)時(shí)間得以縮短,管理容器所需要的資源同樣得以縮減(如果你熟悉z/OS,你會(huì)發(fā)現(xiàn)這個(gè)概念有點(diǎn)熟悉)
財(cái)務(wù)人士會(huì)喜歡這點(diǎn),因?yàn)楂@取操作環(huán)境licenses的花費(fèi)會(huì)實(shí)質(zhì)性的減少,理論上,每一個(gè)非應(yīng)用部分的組件都能駐留在容器以外。這意味著只需要購(gòu)買一個(gè)Windows licenses,而不是每一個(gè)虛擬機(jī)上都要購(gòu)買一個(gè)(如果不使用Docker,這是必要的過(guò)程)。
概念看似簡(jiǎn)單,但是如何工作呢?
本質(zhì)上,一個(gè)特殊的文件(稱為一個(gè)Docker文件),包含一條或多條關(guān)于如何創(chuàng)立一個(gè)容器的指令。這個(gè)Docker文件作為程序的部分,在文件系統(tǒng)中產(chǎn)生容器,其包含一個(gè)單獨(dú)的應(yīng)用以及相關(guān)聯(lián)的二進(jìn)制代碼。這個(gè)容器(文件系統(tǒng)中的一個(gè)子目錄)作為任意的文件集會(huì)被傳送到目標(biāo)環(huán)境并在目標(biāo)環(huán)境中利用Docker的運(yùn)行時(shí)庫(kù)開始運(yùn)行,運(yùn)行時(shí)庫(kù)可以通過(guò)命令行接口或者一個(gè)API(典型的基于REST,但是還有其他的實(shí)現(xiàn))
系統(tǒng)管理員會(huì)很喜歡這點(diǎn),因?yàn)槿萜饕子诓渴穑ㄍㄟ^(guò)XCOPY命令就可以?)和維護(hù)(REST接口會(huì)很容易地集成到任何現(xiàn)代基礎(chǔ)架構(gòu)管理平臺(tái)中)。
企業(yè)級(jí)發(fā)布自動(dòng)化解決方案的需求
很不幸,當(dāng)人們?cè)噲D使用它作為真正的應(yīng)用發(fā)布管理的替代品時(shí),這個(gè)概念又不行了。我們能夠使用每個(gè)人在高中學(xué)會(huì)的六個(gè)詞中的五個(gè)詞還描述應(yīng)用發(fā)布管理:
Who: 并不是組織中的任何人都可以將某一個(gè)應(yīng)用部署到某個(gè)環(huán)境中。實(shí)際上,即使對(duì)于那些專職從事這個(gè)工作的人,也需要其他人的許可才能進(jìn)行部署工作。
What: 對(duì)于那些想真正引入敏捷業(yè)務(wù)概念的組織,
每一次都部署一個(gè)完整的應(yīng)用也是不可接受的。那些被認(rèn)為是低風(fēng)險(xiǎn)的工件(artifacts)(如內(nèi)容更新)可以及時(shí)部署,而高風(fēng)險(xiǎn)的工件則需要在進(jìn)行大量的測(cè)試和其他驗(yàn)證工作后,排隊(duì)等待進(jìn)行發(fā)布。Docker就屬于后者,但是還有一些限制,這會(huì)在后面提到。
Where: 一個(gè)應(yīng)用從開發(fā)到生產(chǎn)所經(jīng)歷的環(huán)境經(jīng)常與部署的目標(biāo)環(huán)境是不同的。這些差異會(huì)在應(yīng)用進(jìn)行部署以后,通過(guò)更改應(yīng)用的配置來(lái)解決。
When: 發(fā)布窗口不是一個(gè)新概念。甚至在非生產(chǎn)環(huán)境中,也需要各自建立發(fā)布窗口,因?yàn)榄h(huán)境經(jīng)常被同一個(gè)功能或者夸功能的多個(gè)團(tuán)隊(duì)所共享(例如:測(cè)試和開發(fā)可能會(huì)使用相同的環(huán)境)
How: 作為很可能是最難以完全集成到一個(gè)組織運(yùn)行能力中的環(huán)節(jié),部署一個(gè)應(yīng)用的過(guò)程遠(yuǎn)不是簡(jiǎn)單的理解如何安裝或者配置它。例如,與一個(gè)IT服務(wù)管理(ITSM)應(yīng)用集成,以確保所有的需求改變都已輸入并且處于正確的狀態(tài),這些被吸納進(jìn)部署過(guò)程以便操作環(huán)境的狀態(tài)一直被明確的理解。這個(gè)會(huì)在下面進(jìn)行詳細(xì)的討論。