0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker和容器技術(shù)為什么會(huì)這么火爆

Linux愛(ài)好者 ? 來(lái)源:鮮棗課堂 ? 作者:小棗君 ? 2021-11-17 10:27 ? 次閱讀

2010年,幾個(gè)搞IT的年輕人,在美國(guó)舊金山成立了一家名叫“dotCloud”的公司。

這家公司主要提供基于PaaS的云計(jì)算技術(shù)服務(wù)。具體來(lái)說(shuō),是和LXC有關(guān)的容器技術(shù)。

后來(lái),dotCloud公司將自己的容器技術(shù)進(jìn)行了簡(jiǎn)化和標(biāo)準(zhǔn)化,并命名為——Docker。

Docker技術(shù)誕生之后,并沒(méi)有引起行業(yè)的關(guān)注。而dotCloud公司,作為一家小型創(chuàng)業(yè)企業(yè),在激烈的競(jìng)爭(zhēng)之下,也步履維艱。

正當(dāng)他們快要堅(jiān)持不下去的時(shí)候,腦子里蹦出了“開源”的想法。

什么是“開源”?開源,就是開放源代碼。也就是將原來(lái)內(nèi)部保密的程序源代碼開放給所有人,然后讓大家一起參與進(jìn)來(lái),貢獻(xiàn)代碼和意見(jiàn)。

有的軟件是一開始就開源的。也有的軟件,是混不下去,創(chuàng)造者又不想放棄,所以選擇開源。自己養(yǎng)不活,就吃“百家飯”嘛。

2013年3月,dotCloud公司的創(chuàng)始人之一,Docker之父,28歲的Solomon?Hykes正式?jīng)Q定,將Docker項(xiàng)目開源。

不開則已,一開驚人。

越來(lái)越多的IT工程師發(fā)現(xiàn)了Docker的優(yōu)點(diǎn),然后蜂擁而至,加入Docker開源社區(qū)。

Docker的人氣迅速攀升,速度之快,令人瞠目結(jié)舌。

開源當(dāng)月,Docker 0.1 版本發(fā)布。此后的每一個(gè)月,Docker都會(huì)發(fā)布一個(gè)版本。到2014年6月9日,Docker 1.0 版本正式發(fā)布。

此時(shí)的Docker,已經(jīng)成為行業(yè)里人氣最火爆的開源技術(shù),沒(méi)有之一。甚至像Google、微軟、Amazon、VMware這樣的巨頭,都對(duì)它青睞有加,表示將全力支持。

Docker火了之后,dotCloud公司干脆把公司名字也改成了Docker Inc. 。

Docker和容器技術(shù)為什么會(huì)這么火爆?說(shuō)白了,就是因?yàn)樗拜p”。

在容器技術(shù)之前,業(yè)界的網(wǎng)紅是虛擬機(jī)。虛擬機(jī)技術(shù)的代表,是VMWare和OpenStack。

相信很多人都用過(guò)虛擬機(jī)。虛擬機(jī),就是在你的操作系統(tǒng)里面,裝一個(gè)軟件,然后通過(guò)這個(gè)軟件,再模擬一臺(tái)甚至多臺(tái)“子電腦”出來(lái)。

在“子電腦”里,你可以和正常電腦一樣運(yùn)行程序,例如開QQ。如果你愿意,你可以變出好幾個(gè)“子電腦”,里面都開上QQ?!白与娔X”和“子電腦”之間,是相互隔離的,互不影響。

虛擬機(jī)屬于虛擬化技術(shù)。而Docker這樣的容器技術(shù),也是虛擬化技術(shù),屬于輕量級(jí)的虛擬化。

虛擬機(jī)雖然可以隔離出很多“子電腦”,但占用空間更大,啟動(dòng)更慢,虛擬機(jī)軟件可能還要花錢(例如VMWare)。

而容器技術(shù)恰好沒(méi)有這些缺點(diǎn)。它不需要虛擬出整個(gè)操作系統(tǒng),只需要虛擬一個(gè)小規(guī)模的環(huán)境(類似“沙箱”)。

它啟動(dòng)時(shí)間很快,幾秒鐘就能完成。而且,它對(duì)資源的利用率很高(一臺(tái)主機(jī)可以同時(shí)運(yùn)行幾千個(gè)Docker容器)。此外,它占的空間很小,虛擬機(jī)一般要幾GB到幾十GB的空間,而容器只需要MB級(jí)甚至KB級(jí)。

正因?yàn)槿绱?,容器技術(shù)受到了熱烈的歡迎和追捧,發(fā)展迅速。

我們具體來(lái)看看Docker。

大家需要注意,Docker本身并不是容器,它是創(chuàng)建容器的工具,是應(yīng)用容器引擎。

想要搞懂Docker,其實(shí)看它的兩句口號(hào)就行。

第一句,是“Build, Ship and Run”。

也就是,“搭建、發(fā)送、運(yùn)行”,三板斧。

舉個(gè)例子:

我來(lái)到一片空地,想建個(gè)房子,于是我搬石頭、砍木頭、畫圖紙,一頓操作,終于把這個(gè)房子蓋好了。

結(jié)果,我住了一段時(shí)間,想搬到另一片空地去。這時(shí)候,按以往的辦法,我只能再次搬石頭、砍木頭、畫圖紙、蓋房子。

但是,跑來(lái)一個(gè)老巫婆,教會(huì)我一種魔法。

這種魔法,可以把我蓋好的房子復(fù)制一份,做成“鏡像”,放在我的背包里。

等我到了另一片空地,就用這個(gè)“鏡像”,復(fù)制一套房子,擺在那邊,拎包入住。

怎么樣?是不是很神奇?

所以,Docker的第二句口號(hào)就是:“Build?once,Run?anywhere(搭建一次,到處能用)”。

Docker技術(shù)的三大核心概念,分別是:

鏡像(Image)

容器(Container)

倉(cāng)庫(kù)(Repository)

我剛才例子里面,那個(gè)放在包里的“鏡像”,就是Docker鏡像。而我的背包,就是Docker倉(cāng)庫(kù)。我在空地上,用魔法造好的房子,就是一個(gè)Docker容器。

說(shuō)白了,這個(gè)Docker鏡像,是一個(gè)特殊的文件系統(tǒng)。它除了提供容器運(yùn)行時(shí)所需的程序、庫(kù)、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(例如環(huán)境變量)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變。

也就是說(shuō),每次變出房子,房子是一樣的,但生活用品之類的,都是不管的。誰(shuí)住誰(shuí)負(fù)責(zé)添置。

每一個(gè)鏡像可以變出一種房子。那么,我可以有多個(gè)鏡像呀!

也就是說(shuō),我蓋了一個(gè)歐式別墅,生成了鏡像。另一個(gè)哥們可能蓋了一個(gè)中國(guó)四合院,也生成了鏡像。還有哥們,蓋了一個(gè)非洲茅草屋,也生成了鏡像。。。

這么一來(lái),我們可以交換鏡像,你用我的,我用你的,豈不是很爽?

于是乎,就變成了一個(gè)大的公共倉(cāng)庫(kù)。

負(fù)責(zé)對(duì)Docker鏡像進(jìn)行管理的,是Docker Registry服務(wù)(類似倉(cāng)庫(kù)管理員)。

不是任何人建的任何鏡像都是合法的。萬(wàn)一有人蓋了一個(gè)有問(wèn)題的房子呢?

所以,Docker Registry服務(wù)對(duì)鏡像的管理是非常嚴(yán)格的。

最常使用的Registry公開服務(wù),是官方的Docker Hub,這也是默認(rèn)的 Registry,并擁有大量的高質(zhì)量的官方鏡像。

好了,說(shuō)完了Docker,我們?cè)侔涯抗廪D(zhuǎn)向K8S。

就在Docker容器技術(shù)被炒得熱火朝天之時(shí),大家發(fā)現(xiàn),如果想要將Docker應(yīng)用于具體的業(yè)務(wù)實(shí)現(xiàn),是存在困難的——編排、管理和調(diào)度等各個(gè)方面,都不容易。于是,人們迫切需要一套管理系統(tǒng),對(duì)Docker及容器進(jìn)行更高級(jí)更靈活的管理。

就在這個(gè)時(shí)候,K8S出現(xiàn)了。

K8S,就是基于容器的集群管理平臺(tái),它的全稱,是kubernetes。

Kubernetes 這個(gè)單詞來(lái)自于希臘語(yǔ),含義是舵手或領(lǐng)航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個(gè)字符。

和Docker不同,K8S的創(chuàng)造者,是眾人皆知的行業(yè)巨頭——Google。

然而,K8S并不是一件全新的發(fā)明。它的前身,是Google自己搗鼓了十多年的Borg系統(tǒng)。

K8S是2014年6月由Google公司正式公布出來(lái)并宣布開源的。

同年7月,微軟、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相繼加入K8S。

之后的一年內(nèi),VMware、HP、Intel等公司,也陸續(xù)加入。

2015年7月,Google正式加入OpenStack基金會(huì)。與此同時(shí),Kuberentes v1.0正式發(fā)布。

目前,kubernetes的版本已經(jīng)發(fā)展到V1.13。

K8S的架構(gòu),略微有一點(diǎn)復(fù)雜,我們簡(jiǎn)單來(lái)看一下。

一個(gè)K8S系統(tǒng),通常稱為一個(gè)K8S集群(Cluster)。

這個(gè)集群主要包括兩個(gè)部分:

一個(gè)Master節(jié)點(diǎn)(主節(jié)點(diǎn))

一群Node節(jié)點(diǎn)(計(jì)算節(jié)點(diǎn))

一看就明白:Master節(jié)點(diǎn)主要還是負(fù)責(zé)管理和控制。Node節(jié)點(diǎn)是工作負(fù)載節(jié)點(diǎn),里面是具體的容器。

深入來(lái)看這兩種節(jié)點(diǎn)。

首先是Master節(jié)點(diǎn)。

Master節(jié)點(diǎn)包括API Server、Scheduler、Controller manager、etcd。

API Server是整個(gè)系統(tǒng)的對(duì)外接口,供客戶端和其它組件調(diào)用,相當(dāng)于“營(yíng)業(yè)廳”。

Scheduler負(fù)責(zé)對(duì)集群內(nèi)部的資源進(jìn)行調(diào)度,相當(dāng)于“調(diào)度室”。

Controller manager負(fù)責(zé)管理控制器,相當(dāng)于“大總管”。

然后是Node節(jié)點(diǎn)。

Node節(jié)點(diǎn)包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。

Pod是Kubernetes最基本的操作單元。一個(gè)Pod代表著集群中運(yùn)行的一個(gè)進(jìn)程,它內(nèi)部封裝了一個(gè)或多個(gè)緊密相關(guān)的容器。除了Pod之外,K8S還有一個(gè)Service的概念,一個(gè)Service可以看作一組提供相同服務(wù)的Pod的對(duì)外訪問(wèn)接口。這段不太好理解,跳過(guò)吧。

Docker,不用說(shuō)了,創(chuàng)建容器的。

Kubelet,主要負(fù)責(zé)監(jiān)視指派到它所在Node上的Pod,包括創(chuàng)建、修改、監(jiān)控、刪除等。

Kube-proxy,主要負(fù)責(zé)為Pod對(duì)象提供代理。

Fluentd,主要負(fù)責(zé)日志收集、存儲(chǔ)與查詢。

是不是有點(diǎn)懵?唉,三言兩語(yǔ)真的很難講清楚,繼續(xù)跳過(guò)吧。

Docker和K8S都介紹完了,然而文章并沒(méi)有結(jié)束。

接下來(lái)的部分,是寫給核心網(wǎng)工程師甚至所有通信工程師看的。

從幾十年前的1G,到現(xiàn)在的4G,再到將來(lái)的5G,移動(dòng)通信發(fā)生了翻天覆地的變化,核心網(wǎng)亦是如此。

但是,如果你仔細(xì)洞察這些變化,會(huì)發(fā)現(xiàn),所謂的核心網(wǎng),其實(shí)本質(zhì)上并沒(méi)有發(fā)生改變,無(wú)非就是很多的服務(wù)器而已。不同的核心網(wǎng)網(wǎng)元,就是不同的服務(wù)器,不同的計(jì)算節(jié)點(diǎn)。

變化的,是這些“服務(wù)器”的形態(tài)和接口:形態(tài),從機(jī)柜單板,變成機(jī)柜刀片,從機(jī)柜刀片,變成X86通用刀片服務(wù)器;接口,從中繼線纜,變成網(wǎng)線,從網(wǎng)線,變成光纖。

就算變來(lái)變?nèi)?,還是服務(wù)器,是計(jì)算節(jié)點(diǎn),是CPU。

既然是服務(wù)器,那么就勢(shì)必會(huì)和IT云計(jì)算一樣,走上虛擬化的道路。畢竟,虛擬化有太多的優(yōu)勢(shì),例如前文所說(shuō)的低成本、高利用率、充分靈活、動(dòng)態(tài)調(diào)度,等等。

前幾年,大家以為虛擬機(jī)是核心網(wǎng)的終極形態(tài)。目前看來(lái),更有可能是容器化。這幾年經(jīng)常說(shuō)的NFV(網(wǎng)元功能虛擬化),也有可能改口為NFC(網(wǎng)元功能容器化)。

以VoLTE為例,如果按以前2G/3G的方式,那需要大量的專用設(shè)備,分別充當(dāng)EPC和IMS的不同網(wǎng)元。

而采用容器之后,很可能只需要一臺(tái)服務(wù)器,創(chuàng)建十幾個(gè)容器,用不同的容器,來(lái)分別運(yùn)行不同網(wǎng)元的服務(wù)程序。

這些容器,隨時(shí)可以創(chuàng)建,也可以隨時(shí)銷毀。還能夠在不停機(jī)的情況下,隨意變大,隨意變小,隨意變強(qiáng),隨意變?nèi)酰谛阅芎凸闹g動(dòng)態(tài)平衡。

簡(jiǎn)直完美!

5G時(shí)代,核心網(wǎng)采用微服務(wù)架構(gòu),也是和容器完美搭配——單體式架構(gòu)(Monolithic)變成微服務(wù)架構(gòu)(Microservices),相當(dāng)于一個(gè)全能型變成N個(gè)專能型。每個(gè)專能型,分配給一個(gè)隔離的容器,賦予了最大程度的靈活。

按照這樣的發(fā)展趨勢(shì),在移動(dòng)通信系統(tǒng)中,除了天線,剩下的部分都有可能虛擬化。核心網(wǎng)是第一個(gè),但不是最后一個(gè)。虛擬化之后的核心網(wǎng),與其說(shuō)屬于通信,實(shí)際上更應(yīng)該歸為IT。核心網(wǎng)的功能,只是容器中普通一個(gè)軟件功能而已。

至于說(shuō)在座的各位核心網(wǎng)工程師,恭喜你們,馬上就要成功轉(zhuǎn)型啦!

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4699

    瀏覽量

    87088
  • IT
    IT
    +關(guān)注

    關(guān)注

    2

    文章

    845

    瀏覽量

    63444
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3215

    瀏覽量

    42327

原文標(biāo)題:10 分鐘看懂 Docker 和 K8S

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    技術(shù),一個(gè)相同配置的主機(jī)往往可以運(yùn)行更多數(shù)量的應(yīng)用。 更快速的啟動(dòng)時(shí)間:傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運(yùn)行于宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系
    發(fā)表于 07-25 14:36

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    ,一個(gè)相同配置的主機(jī)往往可以運(yùn)行更多數(shù)量的應(yīng)用。更快速的啟動(dòng)時(shí)間:傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運(yùn)行于宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)
    發(fā)表于 07-17 11:05

    Jtti:Docker會(huì)替代調(diào)虛機(jī)嗎

    Docker是計(jì)算虛擬化的一種方式,和使用虛擬機(jī)進(jìn)行虛擬化是類似的。由于近幾年Docker技術(shù)的流行和發(fā)展。所以單獨(dú)介紹一下Docker。首先先回答下面一個(gè)問(wèn)題。 1.
    的頭像 發(fā)表于 07-12 14:38 ?239次閱讀
    Jtti:<b class='flag-5'>Docker</b><b class='flag-5'>會(huì)</b>替代調(diào)虛機(jī)嗎

    Docker容器技術(shù)的安裝和使用

    通過(guò)Docker,開發(fā)人員可以更容易地構(gòu)建、交付和運(yùn)行應(yīng)用程序,同時(shí)確保應(yīng)用程序的一致性和可移植性。它也使得應(yīng)用程序的部署更加靈活和高效,因?yàn)樗梢钥焖俚貑?dòng)、停止和擴(kuò)展容器,而不會(huì)影響其他容器或主機(jī)系統(tǒng)。
    發(fā)表于 04-16 11:24 ?279次閱讀
    <b class='flag-5'>Docker</b><b class='flag-5'>容器</b><b class='flag-5'>技術(shù)</b>的安裝和使用

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    什么是Docker? (1)Docker的架構(gòu) Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windo
    的頭像 發(fā)表于 03-07 13:48 ?726次閱讀
    ARM平臺(tái)實(shí)現(xiàn)<b class='flag-5'>Docker</b><b class='flag-5'>容器</b><b class='flag-5'>技術(shù)</b>

    TLT507-Docker容器部署方法說(shuō)明

    TLT507-Docker容器部署方法說(shuō)明
    的頭像 發(fā)表于 01-26 09:49 ?419次閱讀
    TLT507-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說(shuō)明

    RK3568-Docker容器部署方法說(shuō)明

    RK3568-Docker容器部署方法說(shuō)明
    的頭像 發(fā)表于 01-22 10:12 ?1252次閱讀
    RK3568-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說(shuō)明

    docker內(nèi)存不足的解決辦法

    內(nèi)存和CPU。通過(guò)這個(gè)命令,我們可以發(fā)現(xiàn)哪個(gè)容器占用了大量的內(nèi)存資源。 調(diào)整Docker守護(hù)進(jìn)程的內(nèi)存限制: Docker守護(hù)進(jìn)程本身也會(huì)消耗一些內(nèi)存資源。我們可以通過(guò)修改
    的頭像 發(fā)表于 11-23 10:41 ?2464次閱讀

    docker容器有幾種狀態(tài)

    Docker 是一種流行的容器化平臺(tái),它能夠幫助開發(fā)人員將應(yīng)用程序和其依賴打包成一個(gè)獨(dú)立的容器,并且能夠在不同的環(huán)境中進(jìn)行部署和運(yùn)行。在 Docker 中,
    的頭像 發(fā)表于 11-23 09:50 ?2073次閱讀

    docker核心組件有哪些

    Docker 是一種開源的容器化平臺(tái),它能夠?qū)崿F(xiàn)將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)可移植的容器中,從而實(shí)現(xiàn)快速、可重復(fù)、可擴(kuò)展的部署和管理。Docker 的核心組件包括
    的頭像 發(fā)表于 11-23 09:47 ?1805次閱讀

    docker進(jìn)入容器的方法有哪些

    Docker是一種流行的容器化平臺(tái),它能夠快速構(gòu)建、交付和運(yùn)行應(yīng)用程序。在使用Docker時(shí),我們經(jīng)常需要進(jìn)入容器進(jìn)行調(diào)試、管理和運(yùn)行命令等操作。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-23 09:45 ?1w次閱讀

    docker容器容器之間通信

    Docker是一種輕量級(jí)容器技術(shù),能夠?qū)?yīng)用程序及其依賴項(xiàng)封裝在一個(gè)獨(dú)立、可移植的容器中。而容器化的應(yīng)用程序通常是以分布式方式設(shè)計(jì)的,因此
    的頭像 發(fā)表于 11-23 09:36 ?1425次閱讀

    docker容器刪除后數(shù)據(jù)還在嗎

    Docker作為一個(gè)容器化平臺(tái),提供了輕量級(jí)的虛擬化解決方案,能夠方便地創(chuàng)建、部署和管理應(yīng)用程序。然而,對(duì)于Docker容器的數(shù)據(jù)持久性是一個(gè)令人關(guān)注的問(wèn)題。當(dāng)我們刪除一個(gè)
    的頭像 發(fā)表于 11-23 09:32 ?1687次閱讀

    docker部署對(duì)性能的影響

    Docker 是一個(gè)流行的容器化平臺(tái),它提供了一種輕量級(jí)的虛擬化技術(shù),使得應(yīng)用程序可以在獨(dú)立的容器中運(yùn)行。然而,部署應(yīng)用程序到 Docker
    的頭像 發(fā)表于 11-23 09:31 ?1471次閱讀

    docker部署mysql的壞處

    Docker 是一種虛擬化技術(shù),它允許開發(fā)人員在容器內(nèi)打包應(yīng)用程序及其所有依賴項(xiàng),從而實(shí)現(xiàn)在不同環(huán)境中運(yùn)行相同的應(yīng)用程序的能力。然而,在使用 Docker 部署 MySQL 時(shí),也存在
    的頭像 發(fā)表于 11-23 09:29 ?1328次閱讀