容器技術(shù)能夠幫助企業(yè)嘗試實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型,但是這樣做也不是無(wú)懈可擊的。專(zhuān)家Christopher Tozzi在這里與我們分享了需要詢問(wèn)的正確問(wèn)題。
Docker、Kubernetes 以及其他與容器相關(guān)的技術(shù)都是如今IT領(lǐng)域中最熱門(mén)的話題之一。但是,在將這些技術(shù)納入到企業(yè)數(shù)字化轉(zhuǎn)型發(fā)展路線圖之前,你還是需要對(duì)這些技術(shù)進(jìn)行評(píng)估以判斷它們是否符合需求。
確實(shí),容器技術(shù)能夠幫助企業(yè)讓?xiě)?yīng)用部署變得更為高效、可靠和更具可擴(kuò)展性。
但是,為了讓容器正常運(yùn)行,你需要以正確的方式使用它們。與安裝Docker并讓一切都可以自行完成相比,為容器技術(shù)的應(yīng)用制定一份數(shù)字化轉(zhuǎn)型發(fā)展路線圖要更為困難。
本文通過(guò)全面介紹容器技術(shù)的利與弊來(lái)幫助讀者深入了解容器技術(shù)。文章詮釋了如何充分利用容器技術(shù)并將其作為企業(yè)數(shù)字化轉(zhuǎn)型發(fā)展路線圖的一部分。
容器主要做什么和不做什么
容器是用戶部署應(yīng)用所需基礎(chǔ)架構(gòu)的構(gòu)件模塊。與原來(lái)的基礎(chǔ)設(shè)施(如虛擬機(jī),VM)相比,它們具有如下幾個(gè)關(guān)鍵優(yōu)勢(shì):
它們的啟動(dòng)速度更快。容器的啟動(dòng)時(shí)間一般為幾秒鐘;而虛擬機(jī)則需要幾分鐘。它們的可擴(kuò)展性更好。當(dāng)用戶需要為它們的容器化應(yīng)用程序新增容量時(shí),他們只需簡(jiǎn)單地啟動(dòng)更多容器即可(或者讓他們的編排工具為他們自動(dòng)執(zhí)行這一操作)。與使用虛擬機(jī)構(gòu)建的環(huán)境相比,這種技術(shù)能夠更快更簡(jiǎn)便地實(shí)現(xiàn)可擴(kuò)展性,而基于虛擬機(jī)的環(huán)境則需要很長(zhǎng)的時(shí)間用于復(fù)制。它們是微服務(wù)的理想選擇。單個(gè)容器不需要托管一個(gè)完整的應(yīng)用程序。它只需要托管應(yīng)用程序中的一部分——一個(gè)微服務(wù)。通過(guò)使用容器技術(shù),部署多個(gè)微服務(wù)的工作將變得更為簡(jiǎn)便,在此基礎(chǔ)之上就可以構(gòu)成一個(gè)完整的應(yīng)用程序。它們提供了環(huán)境平衡。一個(gè)Docker容器環(huán)境中的可配置變量并不會(huì)很多。這就意味著,用戶可以在不同Docker主機(jī)服務(wù)器或集群之間遷移容器,且無(wú)需擔(dān)心環(huán)境變量的差異性會(huì)導(dǎo)致用戶應(yīng)用程序出現(xiàn)意外的問(wèn)題。無(wú)論底層服務(wù)器硬件是處于何種狀況、主機(jī)操作系統(tǒng)是使用何種類(lèi)型或者用戶的容器化應(yīng)用程序是運(yùn)行在測(cè)試還是生產(chǎn)環(huán)境中,用戶都可以擁有高度的信任感,因?yàn)樗軌蛟谳^好的預(yù)測(cè)狀況下正常運(yùn)行。它們消耗的資源較少。在容器中運(yùn)行的應(yīng)用程序并不需要一個(gè)完整的客戶操作系統(tǒng)來(lái)托管它。有鑒于此,容器的運(yùn)行開(kāi)銷(xiāo)較少。所以與用戶的云虛擬機(jī)相比,用戶可以在單臺(tái)服務(wù)器上運(yùn)行更多的容器。但是,在制定數(shù)字化轉(zhuǎn)型發(fā)展路線圖中容器技術(shù)并不能包打天下。以下是它們的一些主要限制:
它們是與特定操作系統(tǒng)綁定的。雖然Docker本身支持Windows和Linux,但是使用Docker在Linux主機(jī)服務(wù)器上創(chuàng)建運(yùn)行的容器是無(wú)法在Windows上運(yùn)行的, 反之亦然。從這個(gè)意義上來(lái)說(shuō),容器的可移植性要比虛擬機(jī)差。如果使用的是VMware,那么一個(gè)Linux客戶虛擬機(jī)是可以在Windows或Linux主機(jī)服務(wù)器上運(yùn)行的,當(dāng)然反之也是成立的。(一些諸如基于Kernel虛擬機(jī)的其他虛擬化平臺(tái)則只能在Linux主機(jī)上運(yùn)行,但是它們能夠托管Windows客戶機(jī)。)它們可能需要對(duì)應(yīng)用進(jìn)行重新構(gòu)造或編寫(xiě)。在很多情況下,用戶是無(wú)法簡(jiǎn)單地把現(xiàn)有的應(yīng)用程序放入容器中并使其正常運(yùn)行的,就如同把現(xiàn)有主機(jī)服務(wù)器部署在虛擬機(jī)中一樣。用戶的應(yīng)用程序通常需要進(jìn)行重新構(gòu)造或重新開(kāi)發(fā)才能在容器中正常運(yùn)行。其中所需的重新開(kāi)發(fā)工作量將隨著應(yīng)用程序的最初設(shè)計(jì)架構(gòu)和用戶希望應(yīng)用程序?qū)⑷绾卧谌萜髦羞\(yùn)行的不同而各有不同。它們不適用于GUI應(yīng)用。雖然從技術(shù)上來(lái)說(shuō)使用容器技術(shù)來(lái)運(yùn)行需要圖形用戶界面的應(yīng)用程序是可行的,但是在大多數(shù)實(shí)際應(yīng)用場(chǎng)景中這樣做是不現(xiàn)實(shí)的。將容器技術(shù)融入到數(shù)字化轉(zhuǎn)型發(fā)展戰(zhàn)略中容器技術(shù)并不是包治用戶遺留基礎(chǔ)設(shè)施問(wèn)題的靈丹妙藥。它們可以在某些方面能夠有助于制定數(shù)字化轉(zhuǎn)型發(fā)展路線圖,但是它們并不是用戶想要對(duì)各種遺留應(yīng)用或環(huán)境實(shí)現(xiàn)現(xiàn)代化的正確解決方案。
為了評(píng)估容器技術(shù)是否有助于改進(jìn)用戶企業(yè)中特定的應(yīng)用程序、流程或項(xiàng)目,可以詢問(wèn)如下這些問(wèn)題:
Docker是否支持你的工作負(fù)載?在某些情況下,Docker根本不適用于某些類(lèi)型的應(yīng)用。如前文所述,如果用戶的應(yīng)用需要使用圖形界面,那么Docker可能就無(wú)法很好地支持此類(lèi)應(yīng)用了。你的主機(jī)基礎(chǔ)設(shè)施是否能夠支持容器?Docker可以在任何現(xiàn)代的Linux版本以及Widnows 10和Windows Server 2016 上運(yùn)行。但是,Docker不支持其他主機(jī)操作系統(tǒng)。如果用戶的主機(jī)基礎(chǔ)設(shè)施是由運(yùn)行Solaris的服務(wù)器組成的,那么是無(wú)法遷移至Docker的。(甲骨文公司表示有計(jì)劃將Docker引入Solaris,但是具體支持內(nèi)容還有待實(shí)現(xiàn)。)你是否需要為了使用容器技術(shù)而對(duì)應(yīng)用進(jìn)行重新構(gòu)建或開(kāi)發(fā)?如果您的應(yīng)用已經(jīng)準(zhǔn)備好分為若干個(gè)微服務(wù),那么只需簡(jiǎn)單的重構(gòu)就可以很容易地將應(yīng)用移植至Docker環(huán)境中。反之,如果用戶的應(yīng)用程序比較復(fù)雜且不易分拆,那么就可能需要對(duì)應(yīng)用程序進(jìn)行完全重寫(xiě),以便它能夠在容器中高效運(yùn)行。如果屬于這種情況,那么在確定使用Docker之前請(qǐng)先確認(rèn)您擁有足夠的重新開(kāi)發(fā)資源。你優(yōu)化哪些類(lèi)型資源的使用?容器技術(shù)可以幫助您更高效地使用您的內(nèi)部部署或基于云的計(jì)算與內(nèi)存資源。例如,如果用戶需要檢查前端應(yīng)用程序,那么它會(huì)對(duì)您大有裨益。但是,對(duì)于存儲(chǔ)資源優(yōu)化,容器技術(shù)并不是非常有用。無(wú)論一個(gè)數(shù)據(jù)庫(kù)是否在容器內(nèi)運(yùn)行,它所消耗的容量資源都是基本相同的。你是如何設(shè)置和管理容器環(huán)境的?基本上有兩種方法:第一種是用戶在內(nèi)部部署硬件或基于云的虛擬服務(wù)器上自行安裝和管理Docker,第二種則是使用容器即服務(wù)(CaaS)平臺(tái)。對(duì)于第一種方法,用戶需要確保其企業(yè)擁有必要的相關(guān)專(zhuān)業(yè)知識(shí)。而如果采用第二種方法,用戶應(yīng)當(dāng)對(duì)將要使用的CaaS平臺(tái)的優(yōu)勢(shì)和局限性進(jìn)行評(píng)估。公共云中的大多數(shù)CaaS平臺(tái)都要求用戶使用那些他們可能想要或可能不想要在技術(shù)堆棧中添加的特定工具。當(dāng)談及用戶的數(shù)字化轉(zhuǎn)型發(fā)展路線圖時(shí),Docker是否能夠提供比云更高的效率?對(duì)于一些類(lèi)型的工作負(fù)載來(lái)說(shuō),采用遷移至基于云服務(wù)的方法要比使用Docker可以讓用戶獲得更好的結(jié)果。例如,如果用戶在其應(yīng)用中有著計(jì)算密集型服務(wù),那么就會(huì)希望利用無(wú)服務(wù)器的計(jì)算平臺(tái)(例如亞馬遜網(wǎng)絡(luò)服務(wù)Lambda),以便以高性能、高性價(jià)比的方式運(yùn)行它們。在工作負(fù)載優(yōu)化這方面,Docker就不會(huì)如此高效了。