在摩托车上面要了我|五月六月丁香激情|免费无码又爽又刺激软件下载直播|应韩国伦理片|真狗配上的大片视频有多少集|啦啦啦BD在线观看|美女胸部视频

行業(yè)資訊  /  News

首頁 行業(yè)資訊

Docker,云時代的程序交付方式,你看好嗎

發(fā)布日期:2017-11-09 13:55:57  瀏覽次數(shù):3266

Docker是一個重新定義了程序開發(fā)測試、交付和部署過程的開放平臺。Docker也是容器技術(shù)的一種,它運(yùn)行于Linux宿主機(jī)之上,每個運(yùn)行的容器都是相互隔離的,也被稱為輕量級虛擬技術(shù)或容器型虛擬技術(shù)。而且它有點(diǎn)類似Java的編譯一次,到處運(yùn)行,Docker則可以稱為構(gòu)建一次,在各種平臺上運(yùn)行,包括本地服務(wù)器和云主機(jī)等(Build once,run anywhere)。

容器就是集裝箱,我們的代碼都被打包到集裝箱里;Docker就是搬運(yùn)工,幫你把應(yīng)用運(yùn)輸?shù)绞澜绺鞯兀沂浅咚佟?/p>

實(shí)際上Docker的出現(xiàn)離不開很多Linux kernel提供的功能,甚至可以說Docker在技術(shù)上并沒有什么特別重大的創(chuàng)新之處,利用的都是已經(jīng)非常成熟的Linux技術(shù)而已,這些技術(shù)早在Solaris 10或Linux Kernel 2.6的時候就有了。可以毫不夸張的說Docker就是“站在了巨人的肩膀上”。

Docker

一、Docker站在巨人Linux的肩膀上

下面我們就先來了解一下Docker主要利用的Linux技術(shù)。

1)容器技術(shù)容器(Container)

有時候也被稱為操作系統(tǒng)級虛擬化,以區(qū)別傳統(tǒng)的Hypervisor虛擬技術(shù)。它不對硬件進(jìn)行模擬,只是作為普通進(jìn)程運(yùn)行于宿主機(jī)的內(nèi)核之上。

在容器中運(yùn)行的一般都是一個簡易版的Linux系統(tǒng),有root用戶權(quán)限、init系統(tǒng)(采用LXC容器的情況下)、進(jìn)程id、用戶id以及網(wǎng)絡(luò)屬性。

2)LXC

這也是在Linux下使用比較廣泛的容器方案。基本上我們可以認(rèn)為Linux containers =cgroups(資源控制) + namespaces(容器隔離)。

LXC很成熟很強(qiáng)大,然而它卻不好使用,比如它不方便在多臺機(jī)器間移動,不方便創(chuàng)建管理,不可重復(fù)操作,也不方便共享等等,相對于開發(fā)人員來說,它只是系統(tǒng)管理員的玩具。Docker的出現(xiàn)很好的解決了這些問題,它將容器技術(shù)的使用成本拉低到了一個平民價格。

3)namespaces

這是用來為容器提供進(jìn)程隔離的技術(shù),每個容器都有自己的命名空間,比如pid/net/ipc/mnt/uts等命名空間,以及為容器提供不同的hostname.namespace能保證不同的容器之間不會相互影響,每個容器都像是一個獨(dú)立運(yùn)行著的OS一樣。

4)cgroups

cgroups是一個Google貢獻(xiàn)的項目,它主要用來對共享資源的分配、限制、審計及管理,比如它可以為每個容器分配CPU、內(nèi)存以及blkio等的使用限額等。cgroups使得容器能在宿主機(jī)上能友好的相處,并公平的分配資源以及杜絕資源濫用的潛在風(fēng)險。

5)聯(lián)合文件系統(tǒng)

聯(lián)合文件系統(tǒng)是一個分層的輕量、高性能文件系統(tǒng)。Docker之所以這么吸引人,很大程度上在于其在鏡像管理上所做出的創(chuàng)新。而聯(lián)合文件系統(tǒng)正是構(gòu)建Docker鏡像的基礎(chǔ)AUFS(Another Union FS)是一個分層的基于Copy On Write技術(shù)的文件系統(tǒng),支持Union Mount,就是將具有不同文件夾結(jié)構(gòu)的鏡像層進(jìn)行疊加掛載,讓它們看上去就像是一個文件系統(tǒng)那樣。

容器技術(shù)實(shí)現(xiàn)方案可以用下面的圖進(jìn)行簡單說明。

docker1

二、Docker可以干什么?

Docker可以應(yīng)用在各種場景下,比如公司內(nèi)部開發(fā)測試使用,或者作為共有或者私有PaaS平臺等。

現(xiàn)在PaaS平臺的發(fā)展已經(jīng)非常成熟了,這里我們只羅列一些在開發(fā)中使用Docker技術(shù)可能會給我們帶來的益處。

1)在開發(fā)中

構(gòu)建開發(fā)環(huán)境變得簡單,簡單包括幾個方面的意思快速:只需docker run即可共享:通過Dockerfile 或者Registry自動化:一切代碼化的東西都可以自動化統(tǒng)一:每個人的開發(fā)環(huán)境都是一模一樣的設(shè)想我們要基于Nginx/PHP、MySQL和Redis開發(fā),我們可以創(chuàng)建3個Docker鏡像保存到公司私有的Registry中去,每個開發(fā)人員使用的時候是需要執(zhí)行docker run redis即可以享用自己獨(dú)有的Redis服務(wù)了,而且這3個容器不管從占用磁盤空間還是運(yùn)行性能來說,都比虛擬機(jī)要好很多。

2)在測試中

解決環(huán)境構(gòu)建問題:有時候構(gòu)建測試的環(huán)境是一項費(fèi)時費(fèi)力的工作,而Docker能讓這變得輕松。如果你的測試比較簡單的話,甚至直接拿開發(fā)構(gòu)建的鏡像就可以開始了。

消除環(huán)境不一致導(dǎo)致的問題:“在我的機(jī)器上運(yùn)行的好好的,怎么到你那里就不行了?”,我想超過半數(shù)的程序員都曾經(jīng)說過類似的話。如果對導(dǎo)致這一問題的原因進(jìn)行統(tǒng)計的話,我想排在第一位的應(yīng)該非“環(huán)境不一致”莫屬了,這包括操作系統(tǒng)和軟件的版本、環(huán)境變量、文件路徑等。

使用Docker的話你再也不用為此煩惱了。因為你交付的東西不光是你的代碼、配置文件、數(shù)據(jù)庫定義,還包括你的應(yīng)用程序運(yùn)行的環(huán)境:OS加上各種中間件、類庫 + 你的應(yīng)用程序。

3)在部署和運(yùn)維

1.基于容器的部署和自動化

Docker定義了重新打包程序的方法:Docker容器 + 用戶應(yīng)用 = 部署單位(構(gòu)件)。

Docker可以看作是用代碼編寫出來的國際集裝箱,它可以把任何應(yīng)用及相關(guān)依賴項打包成一個輕量、可移植(Portable)、自包含的容器。

以前部署代碼都是代碼級別的,有了Docker,則可以進(jìn)行容器級別的部署。這樣帶來的最大的好處就是開發(fā)者本地測試、CI服務(wù)器測試、測試人員測試,以及生產(chǎn)環(huán)境運(yùn)行的都可以是同一個Docker鏡像。

2.快速進(jìn)行橫向擴(kuò)展

Docker容器的啟動速度很快,可以瞬間啟動大量容器,所以在非常適合在業(yè)務(wù)高峰期進(jìn)行橫向擴(kuò)展。這比傳統(tǒng)的啟動EC2實(shí)例或者物理機(jī)可要快多了。

三、Docker天生與云計算技術(shù)相結(jié)合

當(dāng)然,由于Docker具有很好的移植性,所以它更強(qiáng)大的地方還在于和云環(huán)境結(jié)合使用。

Docker容器是可移植的,或者說跨平臺。將來的應(yīng)用部署可能是在本地進(jìn)行打包(成Docker鏡像)然后傳送到云端運(yùn)行,至于是AWS還是GCE 這不是問題,Docker都能在其上運(yùn)行。這樣不僅能在一定程度上解決vendor-lockin的問題,同時也使得在不同的云服務(wù)提供商之間遷移也變得簡單。尤其是未來在使用多云(multi-cloud)環(huán)境的時候,這將非常便利。


上一篇: 如何構(gòu)建私有云?

下一篇:中國大數(shù)據(jù)行業(yè)自律公約將于明年1月份正式發(fā)布

業(yè)務(wù)
咨詢

客服熱線

客服
熱線

7*24小時服務(wù)熱線

18986158343
7*24小時服務(wù)熱線

關(guān)注微信

關(guān)注
微信

微信二維碼 關(guān)注官方微信
返回頂部 頂部