2021年3月28日 星期日

Kubernetes與 Docker的基本介紹(上)--5分鐘快速理解什麼是Dokcer?

什麼是Docker?







Docker技術在2013年推出以來,在IT界激起千層浪。Docker是一個提供作業系統層的虛擬化軟體工具,讓應用程式佈署在容器 (Container) 下,堆疊一層容器管理介面的軟體抽象,提供自動化的機制來管理容器。Docker最主要解決了在一台獨立主機上的作業系統層虛擬化,在大量主機結點的叢集環境時常面臨的需求,如容器的佈署排程,工作負載,結點間的網路設計,負載平衡,高可靠性,資源監控與管理介面等。很多工程師了解Docker的好處,但在實際應用時卻難以得心應手。因為目前市面上文件書籍大多見樹不見林,它們解釋了Docker的用法,卻沒有解釋的原理。當工程師使用一個工具卻不了解其原理的時,自然問題不斷。


Kubernetes(常簡稱為K8s)是用於自動部署、擴展和管理容器化(containerized)應用程式的開源系統。由Google設計,它旨在提供「跨主機集群的自動部署、擴展以及運行應用程式容器的平台」,支持一系列容器工具,包括Docker。Docker和Kubernetes 運作在不同的層次上,Docker提供應用的容器封裝機制,而Kubernetes則控制著Docker 容器的生命周期。透過 Kubernetes 可以幫助 Docker 的應用容器依據資源或規則分配容器到合適的結點上,並可設定副本與負載平衡機制來提升應用的擴展與可靠性。另外Kubernetes 亦對儲存與網路有多種選擇和支援,可滿足大多數的容器應用需求。


五分鐘讓你快速理解什麼是Docker?


看看Docker的第一句:"Build, Ship and Run”

也就是,“建置、運送、執行”,三個重點。

舉個例子:

我來到台北想蓋個房子,於是我搬磚頭、灌水泥、照著我的建築圖,終於把這個房子蓋好了。


我們叫做恆逸。

住了一段時間以後,老闆叫我到新竹也去蓋個恆逸出來,照慣例來說,我只能再一次搬磚頭、灌水泥、照著我的建築圖再蓋一次!

這個時候,有一個神奇的恆逸講師,傳授我一種魔法,這個魔法可以直接把我剛剛蓋好的房子複製,做成一份鏡像,放在我的包包裡面。


變成鏡像,放到包包裡面


於是我搭高鐵到新竹以後,找了一片空地,就把包包裡面的鏡像拿出來,再複製一次台北恆逸這個房子,蓋在新竹,於是我就安穩的住下來了。

是不是跟魔法一樣令人感到神奇!

所以,Docker的第二句口號就是:“Build once,Run anywhere(建置一次,所有地方都能執行)”

Docker技術的三大核心概念,分別是:

鏡像(Image)
容器(Container)
倉庫(Repository)

在剛剛的例子裡面,放在背包裡面的就是"鏡像",Docker鏡像,而我的背包就是Docker倉庫,在新竹蓋出來的恆逸,就是一個Docker容器。

用白話文來說,這個Docker鏡像是一個特殊的文件系統。它除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(例如環境變量)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

代表每次變出你想要的房子,房子是一樣的,但生活用品之類的,是不含在內,需要的人再去負責購買。

假設每一個鏡像可以變出一種房子,那我只要有很多個不一樣的鏡像,就可以蓋出各種滿足需求的房子。假設我在台北蓋了一個豪華大廈,變成鏡像;小明在屏東蓋了一個三合院,變成鏡像;小花在花蓮蓋了一個透天別墅,也成為鏡像,當我們交換使用的時候,我也可以在台北蓋出透天別墅,小明也可以在屏東蓋出豪華大廈,小花也可以蓋出三合院。

這就是基本Docker能做到的虛擬化服務!是不是很棒!

Docker提供的這些功能,節省許多運算時間,許多知名企業也開始使用Docker減少消耗時間,卻能達到更高的效率。

美國GE電器使用Docker縮短開發時間


美國知名GE電器一直以來都有陸續開發許多應用程式,輾轉至今,這些古老的應用程式成為開發新程式上的困難,增加許多時間浪費(平均超過6周)。最初他們希望能透過雲端解決這些問題,卻因為雲端上的工具產生更多問題。而當GE電器轉換到Docker時,內部開發人員發現Docker的優點,易於使用,並快速上手。他們利用Docker建立關鍵服務,更重要的是,對於像GE這樣子歷史悠久的公司,Docker能夠支援GE許多舊型的應用程式,並且加速GE的數據轉移!。

英國廣播公司使用Docker解決長達30分鐘等待時間


知名英國廣播公司(BBC News)提供30種不同語言新聞,光英文的每日更新就高達8萬則,這些更新在十個不同(且難以修改)的環境中按順序調度運行了超過26,000個作業,導致長期塞車,每個作業的等待和運行時間總計長達60分鐘。

使用Docker讓BBC News消除作業等待時間,並能同時運行作業。它為開發人員提供了易於使用的靈活環境(a flexible continuous integration environment),允許對應用程序體系結構等因素進行更大程度的控制。


相關課程推薦



0 意見:

張貼留言