您好,登錄后才能下訂單哦!
今天小編給大家分享的是Docker容器的由來的詳細(xì)介紹,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
一、docker的介紹
2010年dotCloud公司在舊金山成立,PAAS平臺(tái)的服務(wù)供應(yīng)商;2013年dotCloud更名為Docker股份有限公司(Docker,Inc)。Docker公司專注開源容器引擎的開發(fā),他們的容器引擎產(chǎn)品就叫docker,基于go語言,并遵從Apache2.0協(xié)議。
創(chuàng)始人 Solomon
上一篇文章我們跟大家介紹了什么是容器技術(shù),容器技術(shù)的底層支持其實(shí)就是Linux Container(LXC)技術(shù),LXC技術(shù)在 linux 2.6 的 kernel 里就已經(jīng)存在了,但是LXC設(shè)計(jì)之初并非為專門為PAAS云計(jì)算考慮的,所以LXC缺少一些標(biāo)準(zhǔn)化的管理手段,那時(shí)候LXC想用好非常費(fèi)勁。于是,docker發(fā)現(xiàn)了這點(diǎn),然后針對LXC做了上層標(biāo)準(zhǔn)管理方面的支持,讓LXC更加好用。
那么為什么dotCloud公司能發(fā)現(xiàn)這個(gè)機(jī)遇搞出個(gè)docker然后聲名大噪呢?就像為什么馬云能在中國、在合適的時(shí)間創(chuàng)立了阿里巴巴,做了中國首富... 其實(shí),這都是時(shí)代的造就。我們深入分析IT架構(gòu)的發(fā)展變革史就能明白一些東西了。
早期,我們IT行業(yè)要成功開發(fā)出一個(gè)產(chǎn)品,那么要關(guān)心的的東西太多了。機(jī)房選址、服務(wù)器硬件、網(wǎng)絡(luò)設(shè)備、布線、上架、裝系統(tǒng)、搭環(huán)境、開發(fā)、測試... 只要是跟IT相關(guān)的你都得去關(guān)心安排好。這個(gè)時(shí)期是傳統(tǒng)IT管理與建設(shè)的初期,IT資源成本很高,涉及的人才成本也高。
圖1 早期機(jī)房建設(shè)和維護(hù)工作
云計(jì)算IAAS時(shí)代,AWS、騰訊云、阿里云的出現(xiàn)解決了早期傳統(tǒng)IT管理的痛苦,用戶有了云將不再面對硬件底層管理的問題,開發(fā)和測試都是在云主機(jī)上操作。然而,云主機(jī)就是一個(gè)個(gè)不一樣的操作系統(tǒng),硬件底層管理問題沒有了,但是中間件相關(guān)的問題依然存在!IT運(yùn)維人員要為開發(fā)測試人員提供完善的、穩(wěn)定的云主機(jī)環(huán)境,這個(gè)過程也是相對復(fù)雜的,因?yàn)殚_發(fā)測試人員要求的環(huán)境也是多種多樣,IT運(yùn)維人員需要花費(fèi)一定的時(shí)間和精力去維護(hù)和完善。當(dāng)前大部分公司還是處在這個(gè)階段。
虛擬機(jī) vs 容器 架構(gòu)區(qū)別
容器PAAS時(shí)代,這個(gè)時(shí)代即將到來!(其實(shí),已經(jīng)來了)。容器技術(shù)的出現(xiàn)就是為了解決上面兩個(gè)時(shí)期遺留的痛點(diǎn)問題。有了容器技術(shù),開發(fā)者更加專注于程序的開發(fā)和測試,開發(fā)結(jié)束后能快速方便的把開發(fā)好的APP遷移到另外一個(gè)容器環(huán)境里。簡單來說,開發(fā)人員只需為應(yīng)用創(chuàng)建一次運(yùn)行環(huán)境,就可以在任何環(huán)境里運(yùn)行;Build Once, Run Anywhere。對于IT運(yùn)維人員來說,也是好事!再也不用苦逼的為開發(fā)人員搞一套又一套不一樣的開發(fā)環(huán)境了,搞出一套PAAS平臺(tái),隨便讓開發(fā)使,他們再怎么折騰也不會(huì)改變底層的東西,所以不用花大力氣去維護(hù)這些環(huán)境;Configure Once, Run Anything。既然這個(gè)容器PAAS這么牛逼,那么想做的人也是非常多,docker公司之所以能占領(lǐng)先機(jī)搞定,主要是因?yàn)樗谶@領(lǐng)域有一定的積累,之前也跟CoreOS合作過(CoreOS也是做容器技術(shù)方面很牛的公司,后來跟docker分道揚(yáng)鑣,Rocket是CoreOS發(fā)布的跟docker競爭的產(chǎn)品)。所以,在云計(jì)算PAAS風(fēng)口上,docker在合適的時(shí)間通過自己的技術(shù)積累發(fā)布了這套開源容器管理引擎,想不出名也難了!
二、 docker的組成架構(gòu)
docker設(shè)想是交付運(yùn)行環(huán)境如同海運(yùn),OS如同一個(gè)貨輪,每一個(gè)在OS基礎(chǔ)上的軟件都如同一個(gè)集裝箱,用戶可以通過標(biāo)準(zhǔn)化手段自由組裝運(yùn)行環(huán)境,同時(shí)集裝箱的內(nèi)容可以由用戶自定義,也可以由專業(yè)人員制造。這樣,交付一個(gè)軟件,就是一系列標(biāo)準(zhǔn)化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,并且在最頂端署上自己的名字(最后個(gè)標(biāo)準(zhǔn)化組件是用戶的app)。
要實(shí)現(xiàn)這樣的集裝箱貨輪海運(yùn)的功能,那么docker是如何去設(shè)計(jì)如何區(qū)做的呢?我們先從docker的架構(gòu)說起。
docker主要由以下模塊組成:
Docker 客戶端 - Client
Docker 服務(wù)器 - Docker daemon
Docker 鏡像 - Image
Docker 倉庫 - Registry
Docker 容器 - Container
docker經(jīng)典架構(gòu)圖
Docker 采用的是 (C/S) 架構(gòu)模式,使用遠(yuǎn)程REST API來管理和創(chuàng)建Docker容器。既然是采用REST模式,所以客戶端和服務(wù)端可以不用在一個(gè)host上,可以分布式管理部署。
Docker 客戶端 - Client
docker的客戶端分命令和API兩種類型。docker 的命令一般在系統(tǒng)安裝好docker包后就可以使用,linux下直接是docker開頭,可以用docker --help命令查看所有能運(yùn)行的命令。docker的命令也非常好記,跟linux命令一樣,用多了自然就會(huì)了;而且學(xué)習(xí)docker最好的也是從命令入手。
docker的API一般是寫腳本或者開發(fā)的時(shí)候用比較多,而且都是REST風(fēng)格的,用命令交互的話可以結(jié)合CURL使用。用API能做創(chuàng)建、刪除、修改、查詢等一系列操作,不過還得結(jié)合編程語言使用才會(huì)比較強(qiáng)大。
Docker 服務(wù)器 - Docker daemon
docker daemon就是docker的主服務(wù),docker.service。在linux操作系統(tǒng)下,安裝好了docker服務(wù)我們就可以使用systemctl start/status/stop docker.service去操作docker的服務(wù)。這個(gè)服務(wù)非常重要,如果你系統(tǒng)的docker.service存在異常,那么你的所有docker關(guān)聯(lián)的組件都會(huì)出錯(cuò)。
Docker 鏡像 - Image
docker的鏡像這個(gè)很容易理解,如果你玩過vmware或者openstack的話就很容易懂了,vmware和openstack都有鏡像模版的概念,我們要衍生創(chuàng)建虛擬機(jī),就可以通過鏡像模版來快速部署和生成相同類型的VM。docker的image也是一個(gè)道理,通過不同類型的模版,比如redis鏡像、nginx鏡像來快速創(chuàng)建出容器。好比復(fù)制克隆,只要資源夠,想生成多少就多少。生成出新的容器你可以使用,然后到時(shí)候你又可以打包成鏡像。有了鏡像這個(gè)功能,為生產(chǎn)提供了很好的打包、迭代、傳遞方式。
Docker 倉庫 - Registry
Registry就是倉庫的意思,我們上面提到docker有鏡像,那么鏡像會(huì)因?yàn)闃I(yè)務(wù)的需要以不同類型的方式存在。所以,這么多類型的鏡像如果沒有一個(gè)很好的機(jī)制去管理,那么肯定會(huì)亂套。好比一生產(chǎn)車間,生產(chǎn)需要各種各樣的螺絲釘、齒輪等配件,如果沒有一個(gè)很好的倉庫管理員負(fù)責(zé)對配件進(jìn)行管理,那么車間里將亂七八糟。同樣的,docker 鏡像也需要標(biāo)準(zhǔn)化管理,那么負(fù)責(zé)這塊功能的模塊就是Registry。不過,要注意的是Registry分共有和私有兩種。Docker Hub(https://hub.docker.com/) 是默認(rèn)的 Registry,由 Docker 公司自己維護(hù),上面有數(shù)以萬計(jì)的鏡像,用戶可以自由下載和使用。 不過,使用公有鏡像速度會(huì)很慢(加上GFW的原因),一般公司內(nèi)部使用docker的話都得搭建私有倉庫,不然很影響效率。
Docker 容器 - Container
Container就是容器實(shí)例了,類比KVM生成的虛擬機(jī)。Container是運(yùn)行時(shí)狀態(tài),我們可以通過docker命令和API去控制和改變Container的狀態(tài),比如start、stop等等。上面所講的client、daemon、image 和registry都是為了Container的運(yùn)行穩(wěn)定而服務(wù)的。
以上就是Docker容器的由來的詳細(xì)介紹了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。