一、什麼是容器(Container)
《經濟學家》雜誌曾評價,「如果沒有貨櫃,就不會有全球化。」
MacLane麥克萊恩發現到,降低貨運成本所要求的不僅僅是一個金屬櫃子,而是一整套貨物處理的新方法。這個系統的每個組成部分,港口、輪船、起重機、倉儲設施、貨車、火車以及發貨人自身的作業等等都必須做出改變。海邊碼頭裡的貨櫃是運載貨物用的,是一種按規格標準化的鋼製箱子,貨櫃的特色在於「規格一致,可以層層重疊」,所以可以大量放置在特別設計的遠洋輪船中。有了貨櫃,就可以更加快捷方便的為生產商提供廉價的運輸服務。
圖1. 遠洋輪船的貨櫃運輸示意圖
IT 世界裡借鑒了這個遠洋輪船的貨櫃概念,容器技術是英文單詞Linux Container的直譯,而container有貨櫃、容器的含義。以貨櫃當作主要形象來理解Linux Container的話,會比較清楚。
早期大家認為硬體抽象層基於hypervisor的虛擬化方式可以最大程度上提供虛擬化管理的靈活性,但是每個VM都需要運行一個完整的作業系統以及其中安裝好大量應用程式。隨著時間的推移,對於實際生產開發環境裡,工程師更關注的是自己部署的應用程式,如果每次部署發布都得搞一個完整作業系統和附帶的依賴環境,那麼會讓任務變得很重,性能變得很低下。
基於這種情況,人們就在想,有沒有其他方式能夠讓人更加專注應用程式本身,底層的作業系統和環境我可以共享和複製?換用句話說就是,我部署一個服務運行好後,可以任意移植到另外一個地方,而且不用再安裝一套作業系統和依賴環境。就像貨櫃運載一樣,把貨物一輛跑車(好比開發好的應用APP),打包放到一個容器貨櫃裡,它通過貨輪可以輕而易舉的從上海碼頭(Cent OS 7.2環境)運送到紐約碼頭(Ubuntu 14.04環境)。而且運輸期間,跑車(APP)沒有受到任何損壞(文件沒有丟失),在另外一個碼頭卸貨之後,依然是完美的去賽車(啟動正常)。
Container與VM同樣是將應用程式連同其所需要的環境(相關程式碼、函式庫、環境配置檔)一同打包的技術,但是在Container中不需要安裝作業系統就能執行應用程式。當然也不像VM那樣自己的作業系統自己做,而是在Host OS核心系統層。所有的Container共用Host OS,並建立資源控管機制來配置Host OS上的系統資源,省去執行Guest OS的時間與心力,又同時能做到每個Container互相獨立。
如果說重量級的虛擬化技術就是VM,那麼「容器(Container)」是一種輕量級的虛擬化技術。VM的中心是作業系統,那麼Container的中心就是應用程式。
二、為什麼要使用容器技術(Container)
容器提供一種邏輯封裝機制,能夠將應用程式從實際執行所在環境抽取出來。無論目標環境是私人資料中心、公用雲端還是開發人員的個人筆記型電腦,這種分離的方式都可以輕鬆、一致的部署容器應用程式。容器化提供一種俐落的分工模式,當開發人員專注於應用程式邏輯與依附元件時,IT營運團隊可將注意力集中到部署與管理上,而不用擔心諸如特定軟體版本與應用程式特定設定之類的應用程式細節。
圖2. VM與Docker Container的應用程式服務器架構比較
在前一篇「淺談虛擬機(VM)與容器技術(Container)」筆者有提到過,關於容器技術與虛擬主機性能比較。容器不像VM會將硬體堆疊虛擬化,而是會在作業系統層級進行虛擬化,讓多個容器直接在OS核心之上執行。這表示容器遠比VM輕量,不但共用OS核心、啟動速度快,而且使用的記憶體量也比啟動完整OS要少很多。
表1. 容器技術與虛擬主機性能比較表
功能平台
|
容器(Container)
|
虛擬主機
(Virtual
Machine)
|
技術
|
不需要安裝作業系統
以應用程式為中心
|
需要安裝作業系統(Guest OS)
以作業系統為中心
|
開機載入速度
|
秒為單位
|
分鐘為單位
須等待作業系統開機時間
|
硬碟容量
|
MB 為單位
|
GB 為單位
|
相容性
|
接近原生
|
受限於虛擬技術支援性
|
單一主機
同時運行
|
最高可到數千個
|
最多可到數十個
|
隔離性
|
完全隔離
|
完全隔離
|
三、容器技術(Container)系統應用發展與雲端運算
目前IaaS層面的主流技術在高可用性(High Availability,HA)、災備、存儲等方面都做得非常成熟。如果容器能夠與一個輕量級或者簡化版的IaaS雲端運算平台相融合,交付應用跑在容器上,容器跑在IaaS的私有雲上,這種硬體、雲端運算平台、容器的三層架構就可以滿足雲端服務的企業應用需求。
而容器應用目前最廣泛的有包括Test/QA應用、Web應用、巨量資料,企業應用等等。以網際網路公司為例:其開發營運維護環境複雜,應用多採用分散式架構,後台使用服務的種類繁多,這些都是容器最擅長解決的問題。根據統計,國內外已有一定數量的網際網路公司將容器整合到公司內部的開發測試流程,並以容器為載體發布應用。容器的可攜性、標準的底層平台介面、跨雲端的API等,能在一定程度上解決企業客戶可能面臨的統一開發流程中各類異構開發環境,並降低開發測試的成本,以容器方式交付的軟體,能為客戶帶來實際的價值。
圖3. 工業革命演進
工業4.0是以智慧製造為主導的第四次工業革命,目標是透過充分利用ICT(資訊、通訊和技術)和CPS(資訊物理系統)等技術推動製造業向智慧化轉型(物聯網/IoT案例),那麼整個IT產業都會為工業4.0作出貢獻,包含雲端運算的容器。
圖4. 未來工廠運作模式
例如:假設一個工廠的系統需要100個小型生產軟體服務支撐,是上100個VM還是100個容器呢?容器可以提供大規模、輕量級、獨立、可伸縮、快速啟動停止的服務能力,似乎更適合智慧工廠。把雲端作業系統(Cloud OS)當作一艘貨輪,每一個在Cloud OS基礎上的應用軟體,都如同一個貨櫃,使用者可以通過標準化手段自由組裝營運環境,同時貨櫃的內容可以由使用者自訂,也可以由專業人員製造,這就是軟體工業4.0模式。
近幾年在雲端虛擬化應用的蓬勃發展之際,以及Docker、Google …… 等國際系統廠商所引領的風潮下,將容器技術的發展以及系統化建構及運用模式推向另一個層次。容器有許多可用格式,也仍持續增溫中,目前最受關注且發展也最積極的有:① Docker ② Kubernetes ③ Mesos。
以上的內容簡單的介紹了應用伺服器的容器技術(Container)及其系統應用和發展,接下來【工業物聯網應用 - 應用服務器的漫談】系列文,即將介紹
Docker 的實踐技術,其中包含:
l
Docker的簡介及安裝
l
Docker的基本操作
l
……
敬請期待!
文獻參考
網站資源
[1] Container概念筆記 - 施靜樺- Medium
https://medium.com/@jinghua.shih/container-%E6%A6%82%E5%BF%B5%E7%AD%86%E8%A8%98-b0963ae2d7c6
[2] 十分鐘明白什麼是容器技術 - 每日頭條
https://kknews.cc/zh-tw/code/5noey6l.html
[3] 容器簡介及優點 |
Google Cloud
https://cloud.google.com/containers?hl=zh-tw
[4] 容器虛擬化技術發展 - 技術趨勢 - 工研院資訊與通訊研究所
https://ictjournal.itri.org.tw/Content/Messagess/contents.aspx?MmmID=654304432122064271&MSID=711463634525707463
[5] 圖解工業4.0,未來工廠這樣做運作 - 天下雜誌
http://topic.cw.com.tw/2016industry4.0/article.html
電子期刊
[1] 雲報專欄:雲端運算下容器(Container)技術和應用。邱全成。2016
台灣雲報 Cloud News
二月刊。台灣雲端物聯網產業協會。
http://www.twcloud.org.tw/files/file_pool/1/0i235396067708866326/5.pdf
前篇回顧
【工業物聯網應用 - 應用服務器的漫談】淺談虛擬機 ( VM ) 與容器技術 ( Container )
沒有留言:
張貼留言