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)一種輕量級的虛擬化解決方案。Docker主要利用AUFS機(jī)制來實(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);移植性

中圖分類號:TP311

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

DOI: 10.3969/j.issn.1003-6970.2015.07.012

0 引言

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

1 Docker簡介

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

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

2 Docker的移植性

2.1 AUFS簡介

AUFS (AnotherUnionFS)是一種Union FS,簡單來說就是支持將不同目錄掛載到同一個(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è)類似分層的概念,對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)行一些寫操作。

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可以通過寫復(fù)制把多層合并成文件系統(tǒng)的單層表示。AuFS允許Docker把某些鏡像作為容器的基礎(chǔ)。例如,利用AuFS的機(jī)制,只需要一個(gè)CentOS鏡像的副本就可以作為很多不同容器的基礎(chǔ),既節(jié)省了存儲(chǔ)和內(nèi)存,也保證了容器的快速部署。

使用AuFS的另一個(gè)好處是提升了Docker的版本容器鏡像能力。每個(gè)新版本都是一個(gè)與之前版本的簡單差異改動(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è)類似分層的概念,對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)行一些寫操作。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)目錄和文件。

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

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

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

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

上層的image依賴下層的image,因此docker中把下層的image稱作父image,沒有父image的image稱作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所示。

由此可見,采用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)升級更方便:相比于copy-on-write類型的FS,base-image也可以掛載為可writeable的,可以通過更新base image而一次性更新其之上的容器;

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

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

3 結(jié)論

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

主站蜘蛛池模板: 免费一级毛片在线观看| 欧美综合中文字幕久久| 婷婷亚洲综合五月天在线| 欧美在线网| 精品国产污污免费网站| 欧美成人午夜视频免看| 18黑白丝水手服自慰喷水网站| 美女啪啪无遮挡| 中文字幕日韩欧美| 国产全黄a一级毛片| 国产亚洲男人的天堂在线观看| 午夜小视频在线| 一区二区三区四区日韩| 欧美精品黑人粗大| 午夜视频www| 国产丝袜一区二区三区视频免下载| 国产在线视频福利资源站| 91视频区| 99久久性生片| 高潮毛片无遮挡高清视频播放| 九色在线观看视频| 奇米精品一区二区三区在线观看| 亚洲无码A视频在线| 国语少妇高潮| 亚洲男人的天堂视频| 久久国产高清视频| 在线播放91| 中日韩欧亚无码视频| 成人a免费α片在线视频网站| 毛片a级毛片免费观看免下载| 91久久大香线蕉| 国产精品手机在线观看你懂的| 性激烈欧美三级在线播放| 免费Aⅴ片在线观看蜜芽Tⅴ | 成人亚洲视频| 国产精品原创不卡在线| 久久精品国产免费观看频道| 一级毛片免费播放视频| 日本道综合一本久久久88| 99久久无色码中文字幕| 丰满人妻中出白浆| 国产美女在线观看| 日日拍夜夜嗷嗷叫国产| 亚洲乱码在线播放| 日日碰狠狠添天天爽| 亚洲无码91视频| 久久久久人妻一区精品色奶水 | 久久国产乱子伦视频无卡顿| 2021国产在线视频| 亚洲视频免费在线| 伊人天堂网| 有专无码视频| 国产黑丝一区| 成人小视频在线观看免费| 久久96热在精品国产高清| 欧美激情首页| 99re在线观看视频| 在线免费a视频| 国产精品自拍露脸视频 | 中文字幕无码中文字幕有码在线 | 久久国产成人精品国产成人亚洲| 日本精品视频一区二区| 在线观看av永久| 91麻豆国产视频| 国产欧美精品午夜在线播放| 99久久国产精品无码| 欧美伊人色综合久久天天| 精品国产免费第一区二区三区日韩| 色综合五月婷婷| 久久美女精品| 日本一区二区三区精品AⅤ| 又黄又爽视频好爽视频| 国产精品理论片| 97精品久久久大香线焦| 亚洲swag精品自拍一区| 成年人福利视频| 亚洲第一视频网站| 再看日本中文字幕在线观看| 国产流白浆视频| 夜夜高潮夜夜爽国产伦精品| 日本不卡免费高清视频| 国产va视频|