多个容器一起打包_程序员修神之路容器技术为什么会这么流行(记得去抽奖)
菜菜哥,你上次講的kubernetes我研究了一下,你再給我講講docker唄
docker可很流行呀
kubernetes是容器編排技術(shù),容器不就是指的docker嗎?
docker可不等于容器哦,docker只算是容器的一種吧,算了容器的典型代表
容器的誕生在傳統(tǒng)的軟件部署方式中,程序員需要把要發(fā)布的應(yīng)用程序打成包發(fā)給運(yùn)維人員,然后由運(yùn)維人員在生產(chǎn)環(huán)境進(jìn)行部署。當(dāng)隨著應(yīng)用的版本迭代越來(lái)越多,應(yīng)用的依賴(lài)庫(kù)版本錯(cuò)綜復(fù)雜,往往會(huì)出現(xiàn)開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境不一致的情況發(fā)生,而且由于多數(shù)情況下采用微服務(wù)的架構(gòu),每個(gè)團(tuán)隊(duì)都有可能使用不同版本的依賴(lài)庫(kù),并有可能在升級(jí)的時(shí)候替換掉他們,因而同一個(gè)應(yīng)用程序采用相同版本的依賴(lài)庫(kù)是多么的重要。
當(dāng)應(yīng)用程序比較少或者都是一些單體應(yīng)用的時(shí)候,可以利用虛擬機(jī)來(lái)隔離每個(gè)服務(wù),通過(guò)虛擬機(jī)的虛擬化技術(shù)來(lái)為每個(gè)應(yīng)用程序提供不同的運(yùn)行環(huán)境。但是當(dāng)拆分為微服務(wù)之后,每個(gè)服務(wù)會(huì)變的小而多,這個(gè)時(shí)候如果為每個(gè)應(yīng)用程序分配一個(gè)虛擬機(jī),資源耗費(fèi)是相當(dāng)多的,但是每個(gè)虛擬機(jī)上運(yùn)行多個(gè)微服務(wù)又會(huì)發(fā)生依賴(lài)庫(kù)版本的問(wèn)題,如果有一種起到類(lèi)似虛擬機(jī)隔離作用,但是成本比虛擬機(jī)低很多的技術(shù)該有多好?
容器技術(shù)得益于linux的容器技術(shù),現(xiàn)代開(kāi)發(fā)者已經(jīng)由傳統(tǒng)的虛擬機(jī)方式轉(zhuǎn)向linux容器技術(shù)。容器類(lèi)似虛擬機(jī),但比虛擬機(jī)開(kāi)銷(xiāo)要小的多,并且同樣把每個(gè)應(yīng)用都隔離開(kāi)來(lái)。容器技術(shù)允許你在同一臺(tái)服務(wù)器上運(yùn)行多個(gè)服務(wù),而且還可以根據(jù)每個(gè)服務(wù)提供不同的運(yùn)行環(huán)境。
虛擬機(jī)中的進(jìn)程運(yùn)行在虛擬機(jī)的操作系統(tǒng)中,而運(yùn)行在容器中的進(jìn)程實(shí)際是運(yùn)行在宿主機(jī)的操作系統(tǒng)中,只是表面看來(lái)好像運(yùn)行在容器的沙盒一樣,但實(shí)際上確實(shí)是和其他進(jìn)程相互隔離的。
linux之所以能實(shí)現(xiàn)容器這種功能,得益于它的命名空間和控制組。linux命名空間時(shí)每個(gè)進(jìn)程相互隔離,只能看到它自己的系統(tǒng)資源,例如:文件,進(jìn)程,網(wǎng)絡(luò)等,而linux的控制組技術(shù)能夠限制每個(gè)進(jìn)程可以使用的資源的最大量。一個(gè)技術(shù)進(jìn)行隔離,一個(gè)技術(shù)進(jìn)行限制,這就導(dǎo)致了容器技術(shù)要比虛擬機(jī)要靈活的多。
虛擬機(jī)和容器一個(gè)虛擬機(jī)的正常運(yùn)行,需要運(yùn)行自己的一系列系統(tǒng)進(jìn)程,只是這些系統(tǒng)進(jìn)程就耗費(fèi)了大量資源。容器和虛擬機(jī)相比較就顯得輕量的多,它允許在相同配置的硬件基礎(chǔ)上運(yùn)行更多數(shù)量的應(yīng)用。雖然容器本身也有消耗,但是和虛擬機(jī)系統(tǒng)的消耗比起來(lái)要小的多。
虛擬機(jī)是利用軟件技術(shù)將物理硬件虛擬化為多個(gè)虛擬硬件資源,從而被每個(gè)虛擬機(jī)的操作系統(tǒng)使用。虛擬機(jī)里的進(jìn)程會(huì)進(jìn)行虛擬機(jī)的系統(tǒng)調(diào)用,虛擬機(jī)的指令會(huì)通過(guò)軟件技術(shù)變?yōu)樗拗鳈C(jī)上真正的cpu指令,而容器中的進(jìn)程執(zhí)行的指令不需要任何的虛擬化過(guò)程,直接會(huì)被cpu執(zhí)行,所以單純?cè)趫?zhí)行指令的過(guò)程中,虛擬機(jī)要比容器的執(zhí)行過(guò)程要長(zhǎng),資源耗費(fèi)要多。
docker介紹Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
Docker容器平臺(tái)的出現(xiàn)把linxu容器化技術(shù)推向了一個(gè)高潮,它不僅簡(jiǎn)化了程序部署的方式,更簡(jiǎn)化了打包應(yīng)用和依賴(lài),使容器真正做到了在不同的操作系統(tǒng)之間移植,甚至一個(gè)完整的操作系統(tǒng)也可以被打包成一個(gè)可移植的鏡像。
運(yùn)行docker包的前提是,目標(biāo)機(jī)器一定要運(yùn)行docker。
當(dāng)你的應(yīng)用被打包成docker鏡像之后,無(wú)論在什么操作系統(tǒng)中運(yùn)行,它都能看見(jiàn)相同的文件,相同的依賴(lài)庫(kù),因?yàn)檫@些依賴(lài)庫(kù)已經(jīng)被一起打包到了docker鏡像中,即使目標(biāo)機(jī)器上安裝了正確的版本的依賴(lài)庫(kù),它也會(huì)只用鏡像中的依賴(lài)庫(kù),這就是程序員期盼的無(wú)論何時(shí)何地的環(huán)境一致性呀
END●程序員修神之路--有狀態(tài)的服務(wù)其實(shí)可以做更多的事情●程序員過(guò)關(guān)斬將--數(shù)據(jù)庫(kù)的樂(lè)觀鎖和悲觀鎖并非真實(shí)的鎖●程序員修神之路--設(shè)計(jì)一套R(shí)PC框架并非易事●程序員過(guò)關(guān)斬將--要想獲取我的用戶(hù)信息,就得按照規(guī)矩來(lái)●程序員過(guò)關(guān)斬將--更加優(yōu)雅的Token認(rèn)證方式JWT●程序員過(guò)關(guān)斬將--cookie和session的關(guān)系其實(shí)很簡(jiǎn)單●程序員修神之路--用NOSql給高并發(fā)系統(tǒng)加速●程序員修神之路--高并發(fā)系統(tǒng)設(shè)計(jì)負(fù)載均衡架構(gòu)●程序員修神之路--做好分庫(kù)分表其實(shí)很難之一(繼續(xù)送書(shū))●程序員修神之路--做好分庫(kù)分表其實(shí)很難之二(送書(shū)繼續(xù))●程序員過(guò)關(guān)斬將--你為什么還在用存儲(chǔ)過(guò)程?●程序員過(guò)關(guān)斬將--小小的分頁(yè)引發(fā)的加班血案●程序員修神之路--問(wèn)世間異步為何物?●程序員修神之路--提高網(wǎng)站的吞吐量?總結(jié)
以上是生活随笔為你收集整理的多个容器一起打包_程序员修神之路容器技术为什么会这么流行(记得去抽奖)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: r 保留之前曲线_R简单数据处理和分析
- 下一篇: 单端 平衡 音质区别_听上去「高大上」的