應(yīng)用容器化

應(yīng)用程序通常是指將一系列包和配置文件的部署成一個(gè)實(shí)時(shí)可運(yùn)行的環(huán)境。

應(yīng)用程序通常是指一系列運(yùn)行在操作系統(tǒng)中的服務(wù),例如一個(gè)數(shù)據(jù)庫(kù)服務(wù)器或一個(gè)http服務(wù)器,但是他們也可以部署在提供該服務(wù)的其他任意環(huán)境中,例如一個(gè)虛擬機(jī)或者一個(gè)物理機(jī)

運(yùn)用應(yīng)用程序的主要缺點(diǎn)是該應(yīng)用程序本身,實(shí)時(shí)運(yùn)行環(huán)境,以及base os的一些更新都有可能損壞該應(yīng)用。例如,一個(gè)os的跟新可能包括數(shù)個(gè)依賴(lài)的更新,包括一些由多個(gè)編程語(yǔ)言共同的基礎(chǔ)庫(kù)。而一些不兼容的更新則會(huì)直接影響到該運(yùn)行的應(yīng)用程序。

再者,如果還有另外一個(gè)程序和其共享相同的操作系統(tǒng)和一些相同的庫(kù),其中一個(gè)應(yīng)用程序一些庫(kù)的更新則會(huì)影響其他程序。

所以,如果一個(gè)公司開(kāi)發(fā)一個(gè)標(biāo)準(zhǔn)的應(yīng)用程序,在運(yùn)行環(huán)境的任何維護(hù)都需要一系列測(cè)試去保證任何OS相關(guān)的更新不會(huì)影響的應(yīng)用。

基于應(yīng)用程序的復(fù)雜度, 回歸測(cè)試就會(huì)變得復(fù)雜和龐大。有時(shí)甚至,任何正常的更新都需要停止整個(gè)服務(wù)。正常,這意味著有著高可用feature的環(huán)境可以降低downtime的影響,增加了部署過(guò)程的復(fù)雜度。

這個(gè)維護(hù)會(huì)變得非常復(fù)雜,任何部署和更新都會(huì)變得復(fù)雜。

相應(yīng)的,一個(gè)系統(tǒng)管理員可以使用容器,在單個(gè)操作系統(tǒng)上一些隔離的部分。容器提供了許多和虛擬機(jī)相同的優(yōu)點(diǎn),例如安全,存儲(chǔ),網(wǎng)絡(luò)隔離。這些便利需要更少的硬件資源和更快去啟動(dòng)和停止。他們也隔離庫(kù)和實(shí)時(shí)運(yùn)行環(huán)境(例如CPU和存儲(chǔ))去減少任宿主機(jī)操作系統(tǒng)的更新所帶來(lái)的影響

容器化所帶來(lái)的不僅僅是提高了效率,彈性和可服用性,同時(shí)也帶來(lái)了應(yīng)用和平臺(tái)的可移植性。目前,已有許多容器供應(yīng)商, 例如Rocket, Drawbridge and LXC。目前最主要的供應(yīng)商是Docker.

容器最主要的優(yōu)點(diǎn)如下:

1. 低硬件的覆蓋率

2. 用OS內(nèi)部的功能去創(chuàng)建一個(gè)隔離的環(huán)境(基于命令空間和cgroups技術(shù))。與虛擬機(jī)管理程序相比,這個(gè)方法減少了CPU的數(shù)量和內(nèi)存。在一個(gè)VM里面運(yùn)行程序是從運(yùn)行環(huán)境中創(chuàng)造隔離的一種方法。但是這個(gè)服務(wù)也比較重量級(jí)。

隔離環(huán)境使宿主os和其他應(yīng)用的變化都不同影響容器。因?yàn)槿萜餍枰膸?kù)為容器所獨(dú)屬,應(yīng)用可以無(wú)中斷的運(yùn)行。例如,每個(gè)應(yīng)用都可以獨(dú)占容器的庫(kù)。一個(gè)容器的更新不會(huì)影響到其他容器。

3.快速部署

部署容器是非常快的,因?yàn)闆](méi)有必要去安裝整個(gè)底層的操作系統(tǒng)。通常,去支持隔離,需要在宿主機(jī)或者虛擬機(jī)上安裝一個(gè)新的操作系統(tǒng),任何一個(gè)更新都需要重啟整個(gè)OS。而使用容器技術(shù),則僅僅需要重啟容器而,不會(huì)影響到任何在宿主機(jī)的服務(wù)。

4.多環(huán)境部署

在傳統(tǒng)使用單一主機(jī)部署場(chǎng)景中,任何環(huán)境的差異都會(huì)潛在的影響到應(yīng)用。而使用容器,

差別和不兼容都會(huì)減少,因?yàn)槲覀冊(cè)谑褂猛粋€(gè)容器的鏡像。

5.服用性

相同的容器可以被多個(gè)應(yīng)用復(fù)用而不需要重新部署一個(gè)完整的OS。一個(gè)數(shù)據(jù)庫(kù)的容器可以位一個(gè)應(yīng)用程序創(chuàng)建一系列表格,也可以快速銷(xiāo)毀和重建,而不需要去運(yùn)行一堆任務(wù)。另外,同一個(gè)數(shù)據(jù)庫(kù)容器可以被生產(chǎn)環(huán)境去部署應(yīng)用。 通常,一個(gè)應(yīng)用程序包含所有的依賴(lài)服務(wù)(數(shù)據(jù)庫(kù),消息隊(duì)列,文件系統(tǒng))被封裝在一個(gè)容器內(nèi)。然而,容器的特性和敏捷需要會(huì)讓這個(gè)方法很有挑戰(zhàn)性。在這些例子重,一個(gè)多容器的部署也很可行。另外,需知一些應(yīng)用的一些動(dòng)作可能不適合作容器化。例如,程序訪問(wèn)底層硬件信息,內(nèi)存,文件系統(tǒng)和設(shè)備等由于容器本身的限制可能導(dǎo)致的失敗。

最后,容器促進(jìn)的是小服務(wù)的開(kāi)發(fā),因?yàn)樗麄兲峁┹p量級(jí)可信賴(lài)的環(huán)境去創(chuàng)建和運(yùn)行可被部署到生產(chǎn)或者開(kāi)發(fā)環(huán)境重而非復(fù)雜的多套環(huán)境的生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境。

而容器的硬件資源的隔離則由一個(gè)重量級(jí)的服務(wù)來(lái)支撐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評(píng)論 19 139
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,328評(píng)論 2 89
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,290評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • 目標(biāo):不停追求(卓)、不斷翱翔(菲) 早上9點(diǎn)多起床看小說(shuō)。 昨晚睡覺(jué)的時(shí)感覺(jué)有塵入了呼吸道不停的咳嗽。 收拾家里...
    逆風(fēng)追夢(mèng)人閱讀 207評(píng)論 0 0

友情鏈接更多精彩內(nèi)容