国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

容器化之路:誰偷走了我的構建時間

云計算 前端
作為一個開發,每天總少不了要出N個測試版本進行調試,容器化以后每次出版本都需要打成鏡像,老劉發現每次他做一個鏡像都要20分鐘,而小王只要10分鐘,對比來對比去只有這個東西不一樣!

隨著全面云時代到來,很多公司都走上了容器化道路,老劉所在的公司也不例外。作為一家初創型的互聯網公司,容器化的確帶來了很多便捷,也降低了公司成本,不過老劉卻有一個苦惱,以前每天和他一起下班的小王自從公司上云以后每天都比他早下班一個小時,大家手頭上的活都差不多,講道理不應該呀,經過多番試探、跟蹤、調查,終于讓老劉發現了秘密的所在。

[[262139]]

作為一個開發,每天總少不了要出N個測試版本進行調試,容器化以后每次出版本都需要打成鏡像,老劉發現每次他做一個鏡像都要20分鐘,而小王只要10分鐘,對比來對比去只有這個東西不一樣! 

0411_1.jpg

Storage-Dirver到底是何方神圣?為什么能夠導致構建時間上的差異?現在讓我們來一窺究竟。

在回答這個問題之前我們需要先回答三個問題——什么是鏡像?什么是鏡像構建?什么是storage-driver?

什么是鏡像?

說到鏡像就繞不開容器,我們先看一張來自官方對鏡像和容器解釋的圖片: 

0411_2.jpg

看完以后是不是更疑惑了,我們可以這樣簡單粗暴的去理解,鏡像就是一堆只讀層的堆疊。那只讀層里到底是什么呢,另外一個簡單粗暴的解釋:里邊就是放了一堆被改動的文件。這個解釋在不同的storage-driver下不一定準確但是我們可以先這樣簡單去理解。

那不對呀,執行容器的時候明明是可以去修改刪除容器里的文件的,都是只讀的話怎么去修改呢?實際上我們運行容器的時候是在那一堆只讀層的頂上再增加了一個讀寫層,所有的操作都是在這個讀寫層里進行的,當需要修改一個文件的時候我們會將需要修改的文件從底層拷貝到讀寫層再進行修改。那如果是刪除呢,我們不是沒有辦法刪除底層的文件么?沒錯,確實沒有辦法刪除,但只需要在上層把這個文件隱藏起來,就可以達到刪除的效果。按照官方說法,這就是Docker的寫時復制策略。

為了加深大家對鏡像層的理解我們來舉個栗子,用下面的Dockerfile構建一個etcd鏡像: 

0411_3.jpg

構建完成以后生成了如下的層文件: 

0411_4.jpg

每次進入容器的時候都感覺仿佛進入了一臺虛機,里面包含linux的各個系統目錄。那是不是有一層目錄里包含了所有的linux系統目錄呢?

bingo答對!在***層的層目錄的確包含了linux的所有的系統目錄文件。 

0411_5.jpg

上述Dockerfile中有這樣一步操作

  1. ADD . /go/src/github.com/coreos/etcd 

將外面目錄的文件拷到了鏡像中,那這一層鏡像里究竟保存了什么呢? 

0411_6.jpg

打開發現里面就只有

  1. /go/src/github.com/coreos/etcd這個目錄,目錄下存放了拷貝進來的文件。 

到這里是不是有種管中窺豹的感覺,接下來我們再來了解什么是鏡像構建,這樣基本上能夠窺其全貌了。

什么是鏡像構建?

通過***節的內容我們知道了鏡像是由一堆層目錄組成的,每個層目錄里放著這一層修改的文件,鏡像構建簡單的說就是制作和生成鏡像層的過程,那這一過程是如何實現的呢?以下圖流程為例: 

0411_7.jpg

Docker Daemon首先利用基礎鏡像ubuntu:14.04創建了一個容器環境,通過***節的內容我們知道容器的最上層是一個讀寫層,在這一層我們是可以寫入修改的,Docker Daemon首先執行了RUN apt-update get命令,執行完成以后,通過Docker的commit操作將這個讀寫層的內容保存成一個只讀的鏡像層文件。接下來再在這一層的基礎上繼續執行 ADD run.sh命令,執行完成后繼續commit成一個鏡像層文件,如此反復直到將所有的Dockerfile都命令都被提交后,鏡像也就做好了。

這里我們就能解釋為什么etcd的某個層目錄里只有一個go目錄了,因為構建的過程是逐層提交的,每一層里只會保存這一層操作所涉及改動的文件。

這樣看來鏡像構建就是一個反復按照Dockerfile啟動容器執行命令并保存成只讀文件的過程,那為什么速度會不一樣呢?接下來就得說到storage-driver了。

什么是storage-driver?

再來回顧一下這張圖: 

0411_8.jpg

之前我們已經知道了,鏡像是由一個個的層目錄疊加起來的,容器運行時只是在上面再增加一個讀寫層,同時還有寫時復制策略保證在最頂層能夠修改底層的文件內容,那這些原理是怎么實現的呢?就是靠storage-driver!

簡單介紹三種常用的storage-driver:

AUFS

AUFS通過聯合掛載的方式將多個層文件堆疊起來,形成一個統一的整體提供統一視圖,當在讀寫層進行讀寫的時,先在本層查找文件是否存在,如果沒有則一層一層的往下找。aufs的操作都是基于文件的,需要修改一個文件時無論大小都會將整個文件從只讀層拷貝到讀寫層,因此如果需要修改的文件過大,會導致容器執行速度變慢,docker官方給出的建議是通過掛載的方式將大文件掛載進來而不是放在鏡像層中。 

0411_9.jpg

OverlayFS

OverlayFS可以認為是AUFS的升級版本,容器運行時鏡像層的文件是通過硬鏈接的方式組成一個下層目錄,而容器層則是工作在上層目錄,上層目錄是可讀寫的,下層目錄是只讀的,由于大量的采用了硬鏈接的方式,導致OverlayFS會可能會出現inode耗盡的情況,后續Overlay2對這一問題進行了優化,且性能上得到了很大的提升,不過Overlay2也有和AUFS有同樣的弊端——對大文件的操作速度比較慢。 

0411_10.jpg

DeviceMapper

DeviceMapper和前兩種Storage-driver在實現上存在很大的差異。首先DeviceMapper的每一層保存的是上一層的快照,其次DeviceMapper對數據的操作不再是基于文件的而是基于數據塊的。

下圖是devicemapper在容器層讀取文件的過程: 

0411_11.jpg
  1. 首先在容器層的快照中找到該文件指向下層文件的指針。
  2. 再從下層0xf33位置指針指向的數據塊中讀取的數據到容器的存儲區
  3. ***將數據返回app。

在寫入數據時還需要根據數據的大小先申請1~N個64K的容器快照,用于保存拷貝的塊數據。

DeviceMapper的塊操作看上去很美,實際上存在很多問題,比如頻繁操作較小文件時需要不停地從資源池中分配數據庫并映射到容器中,這樣效率會變得很低,且DeviceMapper每次鏡像運行時都需要拷貝所有的鏡像層信息到內存中,當啟動多個鏡像時會占用很大的內存空間。

針對不同的storage-driver我們用上述etcd的dockerfile進行了一組構建測試 

0411_1.jpg

:該數據因dockerfile以及操作系統、文件系統、網絡環境的不同測試結果可能會存在較大差異

我們發現在該實驗場景下DevivceMapper在時間上明顯會遜于AUFS和Overlay2,而AUFS和Overlay2基本相當,當然該數據僅能作為一個參考,實際構建還受到具體的Dockerfile內容以及操作系統、文件系統、網絡環境等多方面的影響,那要怎么樣才能盡量讓構建時間最短提升我們的工作效率呢?

且看下回分解!

責任編輯:未麗燕 來源: Dockone.io
相關推薦

2010-09-10 13:19:57

無線網絡信號

2018-09-10 16:23:36

手機信號信號差信號強度

2009-05-07 17:54:15

無線網絡信號故障

2019-08-06 08:55:22

PHP數據庫Linux

2019-05-27 10:04:49

2014-03-03 21:02:35

2022-06-06 16:17:10

云計算運營商IT

2015-11-06 16:11:43

流量4G

2022-02-03 14:59:13

互聯網春晚流量

2023-06-05 00:21:33

0.001服務可用漏洞

2014-03-04 09:39:41

設計師團隊合作

2017-12-17 21:33:55

2019-12-06 11:22:00

中國電信

2018-06-26 09:58:35

2019-12-23 08:00:00

虛擬機容器VNF

2015-11-03 09:46:53

數據房地產買房

2022-01-17 11:23:59

iOS蘋果系統

2020-01-10 09:06:10

Activity系統 通信

2012-12-12 09:56:40

EC2AWSAmazon

2015-10-09 11:02:02

點贊
收藏

51CTO技術棧公眾號

一本一本久久| 成人黄网大全在线观看| 自拍偷拍在线视频| 日韩精品免费一区二区在线观看| 久久av中文字幕片| 欧美精品色综合| 97视频网站入口| 色婷婷综合网站| 国产精品巨作av| 丝袜脚交一区二区| 91香蕉亚洲精品| 中文字幕亚洲影视| 午夜精品久久久久久久99热浪潮 | 一二三四社区在线视频6| 91蜜桃网址入口| 8x8x华人在线| 精品一区二区日韩| 色综合电影网| 丝袜美腿亚洲一区| 欧美日韩国产综合视频在线| 亚洲精品影视| 欧美日韩精品免费在线观看视频| 一区二区动漫| 韩日午夜在线资源一区二区| 欧美va天堂| 九九九热999| 激情亚洲综合在线| 成人性生活视频免费看| 久久在线免费观看| 久久亚洲欧美国产精品乐播| 国产精品永久入口久久久| 亚洲成人高清| 日韩一区二区三区在线视频| 日韩欧美亚洲| 国产午夜精品理论片a级大结局| 国产一区喷水| 日韩中文字幕麻豆| 四虎成人在线| 一区二区日韩精品| 成人精品在线| 4388成人网| 欧美视频在线观看| 五月天久久狠狠| 成人免费毛片高清视频| 奇米影音第四色| 黄色成人在线播放| 日韩av激情| 超碰91人人草人人干| 欧美影院三区| 青娱乐一区二区| 91香蕉视频mp4| 一级片免费看| 日韩一区二区三区在线观看| 成人免费黄色| 日韩美女中文字幕| 禁久久精品乱码| 99久久99久久精品| 亚洲视频在线观看一区| 欧美激情午夜| 久久久99久久精品女同性| 成人写真视频| 一区二区不卡在线| 中文字幕综合网| gogo在线观看| 欧美精品中文字幕一区| 国模大胆一区二区三区| 热99这里只有精品| 偷偷要91色婷婷| 亚洲福利精品视频| 色八戒一区二区三区| 亚洲欧美久久久| 激情图片qvod| 日韩一区有码在线| 最新日本视频| 欧美一级一区二区| 久久天天久久| 欧美在线视频免费| 中国日本在线视频中文字幕| 中文字幕精品久久久久| 99久久综合狠狠综合久久aⅴ| 亚洲精品成人a8198a| 亚洲黄色av一区| 成人免费一区二区三区牛牛| 欧美一区二区三区四区在线| 蜜臀av一区二区在线免费观看| jlzzjlzz欧美| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲黄网站黄| 成年人观看网站| 在线观看亚洲成人| 福利片在线一区二区| 亚洲美女自拍偷拍| 91国产丝袜在线播放| 久久久噜噜噜久久人人看| 91免费在线视频| 91亚洲无吗| 黄色羞羞视频在线观看| 青草视频在线免费直播| av资源种子在线观看| 国产美女福利在线| 国产精品**亚洲精品| 丰满诱人av在线播放| 粉嫩91精品久久久久久久99蜜桃| 亚洲人成在线网站| 亚洲精品大片| 九九热线有精品视频99| 国产成人综合网| 日韩视频在线你懂得| 精品国产第一页| 亚洲熟妇av一区二区三区| 日本免费观看网站| 亚洲黄色网址在线观看| 国产日韩一区二区在线观看| 精品国产免费av| 九色蝌蚪在线| 九一在线视频| 麻豆av电影在线观看| 国产一级粉嫩xxxx| 在线成人福利| 久久经典视频| 污污网站在线观看| 一区二区三区电影大全| 色佬视频在线观看| 三级理论午夜在线观看| 欧美日韩精品免费在线观看视频| 亚洲免费电影在线观看| 国产欧美日韩在线观看视频| 日韩精品视频中文字幕| 亚洲精品自拍| 日韩欧美四区| 亚洲久久一区| 亚洲黄色免费电影| 7m精品福利视频导航| 少妇人妻互换不带套| 国产精成人品2018| 日韩精品一二区| 精品一区二区精品| 欧美日韩一区二区三区四区五区| 在线日韩第一页| 亚洲午夜精品一区二区| 国产成人极品视频| 男人天堂成人网| 深夜成人在线| 国产精品欧美精品| 国产亚洲欧美日韩美女| 欧美图片激情小说| 精品国产乱码久久久久久樱花| 我不卡手机影院| 亚洲国产欧美在线人成| 成人在线一区二区| 中文字幕国产传媒| 九九精品在线观看| 日韩女优毛片在线| 亚洲三级小视频| 久久精品国产久精国产爱| 成人女性视频| 亚洲精品观看| 最新日韩精品| а天堂中文在线官网| 视频在线91| 9l视频白拍9色9l视频| 亚洲小说欧美另类激情| 激情伦成人综合小说| 国产精品小说在线| 午夜精品三级视频福利| 亚洲人免费视频| 精品女同一区二区| 欧美性猛片xxxx免费看久爱 | 欧美一级高清免费播放| 亚洲人午夜色婷婷| 精品精品国产高清a毛片牛牛 | 成人av影院在线观看| www黄在线观看| 蜜芽视频在线观看| 99视频资源网| 日本a√在线观看| 国产人妻777人伦精品hd| 亚洲精美视频| 视频一区三区| 水蜜桃亚洲精品| 国产伦精品一区二区三毛| 国产一区二区在线免费| 国产精品国产三级国产aⅴ浪潮 | 女人高潮被爽到呻吟在线观看 | 69国产精品成人在线播放| 欧美麻豆久久久久久中文| 久久精品男人天堂| 最近2019中文字幕第三页视频 | 在线观看黄av| shkd中文字幕久久在线观看| 美州a亚洲一视本频v色道| 污黄视频在线看| 日本大片在线观看| 国产大片在线免费观看| www.在线播放| 羞羞的视频在线看| 亚洲一区资源| gogo大尺度成人免费视频| 亚洲精品黑牛一区二区三区| 人体久久天天|