999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Docker技術(shù)的移植性分析研究

2015-12-25 08:59:24于燁李斌劉思堯
軟件 2015年7期

于燁++李斌++劉思堯

摘要:Docker因?yàn)槠漭p量、便捷的特點(diǎn),受了業(yè)界廣泛的關(guān)注和討論,目前已有多個(gè)相關(guān)項(xiàng)目,逐漸形成了圍繞Docker的生態(tài)體系。Docker的核心思想是利用擴(kuò)展的LXC(Linux Container)方案實(shí)現(xiàn)一種輕量級(jí)的虛擬化解決方案。Docker主要利用AUFS機(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)的移植性,節(jié)省了存儲(chǔ)和內(nèi)存,也保證了容器的快速部署。本文從AUFS的實(shí)現(xiàn)原理入手,詳細(xì)分析了Docker的移動(dòng)應(yīng)用部署的原理和可行性。

關(guān)鍵詞:Docker;AUFS;文件系統(tǒng);移植性

中圖分類(lèi)號(hào):TP311

文獻(xiàn)標(biāo)識(shí)碼:A

DOI: 10.3969/j.issn.1003-6970.2015.07.012

0 引言

Docker是dotcloud公司于2013初年開(kāi)始的一個(gè)開(kāi)源項(xiàng)目,最早是該公司已有的云業(yè)務(wù)的一個(gè)自然擴(kuò)展技術(shù)。Docker對(duì)容器的使用基本是建立在LXC基礎(chǔ)之上的,然而LXC存在的問(wèn)題是難以移動(dòng),即難以通過(guò)標(biāo)準(zhǔn)化的模板制作、重建、復(fù)制和移動(dòng)容器。在以VM為基礎(chǔ)的虛擬化手段中,有image和snapshot可以用于VM的復(fù)制、重建以及移動(dòng)的功能。想要通過(guò)容器來(lái)實(shí)現(xiàn)快速的大規(guī)模部署和更新,這些功能不可或缺。針對(duì)這樣的問(wèn)題,Docker利用AUFS來(lái)實(shí)現(xiàn)對(duì)容器的快速更新,Docker0.7中引入了Storage Driver,支持AUFS,VFS,Device Mapper,也為BTRFS以及ZFS的引入提供了可能。

1 Docker簡(jiǎn)介

Docker是PaaS提供商dotCloud開(kāi)源的一個(gè)基于LXC(Linux Container)的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以將應(yīng)用程序、依賴(lài)的運(yùn)行庫(kù)文件打包并移植到一個(gè)新的容器中,然后發(fā)布到任何系統(tǒng)為L(zhǎng)inux的機(jī)器上,也可以實(shí)現(xiàn)虛擬化解決方案。容器是完全沙箱機(jī)制的實(shí)現(xiàn)方式,任意容器之間不會(huì)有任何接口,具有安全訪問(wèn)資源的特性,可以實(shí)現(xiàn)系統(tǒng)的隔離;而且容器的運(yùn)行資源開(kāi)銷(xiāo)小,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是Docker容器不依賴(lài)于任何特定需求實(shí)現(xiàn)的編程語(yǔ)言、編程框架或已打包的系統(tǒng)。Docker目前在業(yè)界非常受歡迎,包括dotCloud, Google Compute Engine和百度應(yīng)用引擎(BAE),都使用了Docker。

Docker容器主要解決“依賴(lài)地獄”的問(wèn)題,即應(yīng)用通常從已存在的組件組合而來(lái),并且依賴(lài)其他服務(wù)和應(yīng)用。例如,Python應(yīng)用可能使用Postgre所為一個(gè)數(shù)據(jù)存儲(chǔ),用Redis緩存以及使用Apache作web服務(wù)器。每個(gè)這些組件都附帶自身的一些依賴(lài),這些依賴(lài)可能與其他組件產(chǎn)生沖突。通過(guò)打包每個(gè)組件及其依賴(lài),Docker容器解決沖突依賴(lài)、缺少依賴(lài)、平臺(tái)依賴(lài)等問(wèn)題。

2 Docker的移植性

2.1 AUFS簡(jiǎn)介

AUFS (AnotherUnionFS)是一種Union FS,簡(jiǎn)單來(lái)說(shuō)就是支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)的文件系統(tǒng),更進(jìn)一步地,AUFS支持為每一個(gè)成員目錄(AKA branch)設(shè)定readonly,readwrite和whiteout-able權(quán)限,同時(shí)AUFS里有一個(gè)類(lèi)似分層的概念,對(duì)readonly權(quán)限的branch可以邏輯上進(jìn)行修改(增量地,不影響readonly部分的)。通常Union FS有兩個(gè)用途,一方面可以實(shí)現(xiàn)不借助LVM,RAID將多個(gè)disk和掛在到一個(gè)目錄下,另一個(gè)更常用的就是將一個(gè)readonly的branch和一個(gè)writeable的branch聯(lián)合在一起,Live CD正是基于此可以允許在OS image不變的基礎(chǔ)上允許用戶在其上進(jìn)行一些寫(xiě)操作。

2.2 Docker的移植性分析

Docker使用AuFS作為容器的文件系統(tǒng)。AuFS的層狀文件系統(tǒng)能夠透明覆蓋一個(gè)或多個(gè)現(xiàn)有文件系統(tǒng)。當(dāng)一個(gè)進(jìn)程需要修改一個(gè)文件時(shí),AuFS創(chuàng)建該文件的一個(gè)副本。AuFS可以通過(guò)寫(xiě)復(fù)制把多層合并成文件系統(tǒng)的單層表示。AuFS允許Docker把某些鏡像作為容器的基礎(chǔ)。例如,利用AuFS的機(jī)制,只需要一個(gè)CentOS鏡像的副本就可以作為很多不同容器的基礎(chǔ),既節(jié)省了存儲(chǔ)和內(nèi)存,也保證了容器的快速部署。

使用AuFS的另一個(gè)好處是提升了Docker的版本容器鏡像能力。每個(gè)新版本都是一個(gè)與之前版本的簡(jiǎn)單差異改動(dòng),有效地保持鏡像文件最小化。但這也意味著需要一個(gè)記錄該容器從一個(gè)版本到另一個(gè)版本改動(dòng)的審計(jì)跟蹤。

AUFS是一種Union FS,它是一種支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下的文件系統(tǒng),并且支持為每一個(gè)成員目錄(AKA branch)設(shè)定‘readonly,‘readwrite和 ‘whiteout-able權(quán)限,同時(shí)AUFS里有一個(gè)類(lèi)似分層的概念,對(duì)readonly權(quán)限的branch可以邏輯上進(jìn)行修改。通常Union FS有兩個(gè)用途,一方面可以實(shí)現(xiàn)不借助LVM, RAID將多個(gè)disk和掛在到一個(gè)目錄下,另一個(gè)更常用的就是將一個(gè)readonly的branch和一個(gè)writeable的branch聯(lián)合在一起,Live CD正是基于此可以允許在OS image不變的基礎(chǔ)上允許用戶在其上進(jìn)行一些寫(xiě)操作。Docker在AUFS上構(gòu)建的container image也正是如此。

典型的Linux啟動(dòng)到運(yùn)行需要兩個(gè)FS:bootfs和rootfs(從功能角度而非文件系統(tǒng)角度),如圖1所示。

bootfs (boot file system)主要包含bootloader和kernel,bootloader主要用于引導(dǎo)加載kernel,當(dāng)boot成功后,kernel被加載到內(nèi)存中,bootfs就被umount了。endprint

rootfs (root file system)包含典型Linux系統(tǒng)中的/dev,/proc,/bin,/etc等標(biāo)準(zhǔn)目錄和文件。

由此可見(jiàn)對(duì)于不同的linux發(fā)行版,bootfs基本是一致的,rootfs會(huì)有差別,因此不同的發(fā)行版可以公用bootfs如圖2所示。

典型的Linux在啟動(dòng)后,首先將rootfs置為readonly,進(jìn)行一系列檢查,然后將其切換為readwrite供用戶使用。在docker中,最初也是將rootfs以readonly方式加載并檢查,接下來(lái)利用unionmount將一個(gè)readwrite文件系統(tǒng)掛載在readonly的rootfs之上,允許再次將下層的file system設(shè)定為readonly并向上疊加,這樣以來(lái)一組readonly和一個(gè)writeable的結(jié)構(gòu)就構(gòu)成一個(gè)container的運(yùn)行目錄,每一個(gè)運(yùn)行目錄被稱(chēng)作一個(gè)Layer,如圖3所示。

得益于AUFS的特性,每一個(gè)對(duì)readonly層文件或文件目錄的修改都只會(huì)存在于上層的writeable層中。這樣就可以避免競(jìng)爭(zhēng),使多個(gè)container可以共享readonly的layer。

因此docker將readonly的層稱(chēng)作“image”,對(duì)于容器而言整個(gè)rootfs都是read-write的,但事實(shí)上所有的修改都寫(xiě)入最上層的writeable層中,image不保存用戶狀態(tài),可以用于模板、重建和復(fù)制。

上層的image依賴(lài)下層的image,因此docker中把下層的image稱(chēng)作父image,沒(méi)有父image的image稱(chēng)作base image,如圖4所示。

因此想要從一個(gè)image啟動(dòng)一個(gè)容器,docker會(huì)先加載其父image直到base image,用戶的進(jìn)程運(yùn)行在writeable的layer中。所有parent image中的數(shù)據(jù)信息以及ID、網(wǎng)絡(luò)和lxc管理的資源限制等具體container的配置,構(gòu)成一個(gè)docker概念上的容器,如圖5所示。

由此可見(jiàn),采用AUFS作為docker的容器文件系統(tǒng),能夠提供如下好處:

(1)節(jié)省存儲(chǔ)空間:多個(gè)容器可以共享base image存儲(chǔ);

(2)快速部署:如果要部署多個(gè)容器,base image可以避免多次拷貝;

(3)內(nèi)存更省:因?yàn)槎鄠€(gè)容器共享base image,以及OS的disk緩存機(jī)制,多個(gè)容器中的進(jìn)程命中緩存內(nèi)容的幾率大大增加;

(4)升級(jí)更方便:相比于copy-on-write類(lèi)型的FS,base-image也可以掛載為可writeable的,可以通過(guò)更新base image而一次性更新其之上的容器;

(5)允許在不更改base-image的同時(shí)修改其目錄中的文件:所有寫(xiě)操作都發(fā)生在最上層的writeable層中,這樣可以大大增加base image能共享的文件內(nèi)容。

以上5條中,1-3條可以通過(guò)copy-on-write的FS實(shí)現(xiàn),4可以利用其他的union mount方式實(shí)現(xiàn),5只有AUFS實(shí)現(xiàn)的很好。這也是為什么Docker一開(kāi)始就建立在AUFS之上。

3 結(jié)論

Docker使用AuFS作為容器的文件系統(tǒng)。AUFS是一種Union FS,它是一種支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下的文件系統(tǒng),并且為每一個(gè)成員目錄(AKA branch)設(shè)定不同的權(quán)限,并基于一種分層的概念,對(duì)這些權(quán)限從邏輯上進(jìn)行修改。節(jié)省了存儲(chǔ)和內(nèi)存,保證了容器的快速部署和升級(jí)的便捷性。endprint

主站蜘蛛池模板: 午夜爽爽视频| 国产又大又粗又猛又爽的视频| 亚洲免费福利视频| 99青青青精品视频在线| 国产成人高清精品免费5388| 91亚洲免费| 国产亚洲精品97AA片在线播放| 国产肉感大码AV无码| 超清人妻系列无码专区| 996免费视频国产在线播放| 久久亚洲日本不卡一区二区| 日韩一区精品视频一区二区| 久久中文电影| 免费啪啪网址| 国产99视频在线| 亚洲欧美人成电影在线观看| 国产丝袜精品| 亚洲三级成人| 亚洲第一极品精品无码| 91福利国产成人精品导航| 奇米影视狠狠精品7777| AV熟女乱| 三区在线视频| 国产爽爽视频| 国产H片无码不卡在线视频 | 亚洲日韩图片专区第1页| 欧美不卡视频一区发布| 91蜜芽尤物福利在线观看| 丰满人妻久久中文字幕| 日本精品视频一区二区| 囯产av无码片毛片一级| 国产视频欧美| 久久特级毛片| 国产粉嫩粉嫩的18在线播放91| 色偷偷一区二区三区| 热久久这里是精品6免费观看| 偷拍久久网| 久久窝窝国产精品午夜看片| 亚洲VA中文字幕| 欧美伊人色综合久久天天| 日韩午夜伦| 六月婷婷精品视频在线观看| 五月天在线网站| 另类重口100页在线播放| 久草网视频在线| 秋霞午夜国产精品成人片| 亚洲精品无码日韩国产不卡| 国产精品黄色片| 亚洲成人播放| 国产乱人免费视频| 欧美精品在线视频观看| 国产超碰一区二区三区| 亚洲自拍另类| 手机看片1024久久精品你懂的| 国产高清色视频免费看的网址| 99精品一区二区免费视频| 亚洲欧美一区二区三区图片| 四虎免费视频网站| 亚洲精品成人7777在线观看| 亚洲欧美不卡视频| 欧美一区精品| 欧美日韩精品一区二区在线线| 人妻21p大胆| 青青操国产视频| 99久久国产综合精品2023 | 亚洲男人的天堂在线观看| 国产在线专区| 亚洲欧洲日本在线| 2020国产精品视频| 日本影院一区| www.91中文字幕| 韩国v欧美v亚洲v日本v| 中文国产成人久久精品小说| 亚洲毛片一级带毛片基地| 国产成人亚洲无码淙合青草| 97国内精品久久久久不卡| 狠狠操夜夜爽| 国产在线98福利播放视频免费| 婷婷色丁香综合激情| 一个色综合久久| 国产在线98福利播放视频免费| 久久99热66这里只有精品一|