怎么深入分析Docker鏡像原理

今天就跟大家聊聊有關(guān)怎么深入分析Docker鏡像原理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對(duì)外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺(tái),成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:垃圾桶網(wǎng)站設(shè)計(jì)、成都全網(wǎng)營(yíng)銷解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。


為通道等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及通道網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、通道網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1.Docker鏡像的基本知識(shí)

1.1 什么是Docker鏡像

從整體的角度來講,一個(gè)完整的Docker鏡像可以支撐一個(gè)Docker容器的運(yùn)行,在 Docker容器運(yùn)行過程中主要提供文件系統(tǒng)視角。例如一個(gè)ubuntu:14.04的鏡像,提供了一個(gè)基本的ubuntu:14.04的發(fā)行版,當(dāng)然此 鏡像是不包含操作系統(tǒng)Linux內(nèi)核的。

說到此,可能就需要注意一下,linux內(nèi)核和ubuntu:14.04Docker鏡像的區(qū)別了。傳統(tǒng)虛擬機(jī)安裝ubuntu:14.04會(huì)包含兩部分,第一,某一個(gè)Linux內(nèi)核的發(fā)行版本,比如Linux 3.8版本的內(nèi)核;第二,第一個(gè)特定的Ubuntu發(fā)行版,這部分內(nèi)容不包含Linux內(nèi)核,但是包含Linux之外的軟件管理方式,軟件驅(qū)動(dòng),如 apt-get軟件管理包等。

理解以上內(nèi)容之后,就可以理解,為什么在一個(gè)Linux內(nèi)核版本為3.8的ubuntu:14.04基礎(chǔ)上,可以把Linux內(nèi)核版本升級(jí)到3.18,而ubuntu的版本依然是14.04。最主要的就是:Linux內(nèi)核版本與ubuntu操作系統(tǒng)發(fā)行版之間的區(qū)別。

Linux內(nèi)核+ubuntu操作系統(tǒng)發(fā)行版,組成一臺(tái)工作的機(jī)器讓用戶體驗(yàn)。那么靈活替換ubuntu操作系統(tǒng)發(fā)行版,那是不是也可以實(shí)現(xiàn)呢。那么Docker很方便的利用了這一點(diǎn),技術(shù)手段就是Docker鏡像。

Docker的架構(gòu)中,Docker鏡像就是類似于“ubuntu操作系統(tǒng)發(fā)行版”,可 以在任何滿足要求的Linux內(nèi)核之上運(yùn)行。簡(jiǎn)單一點(diǎn)有“Debian操作系統(tǒng)發(fā)行版”Docker鏡像、“Ubuntu操作系統(tǒng)發(fā)行版”Docker鏡 像;如果在Debian鏡像中安裝MySQL 5.6,那我們可以將其命名為Mysql:5.6鏡像;如果在Debian鏡像中安裝有Golang 1.3,那我們可以將其命名為golang:1.3鏡像;以此類推,大家可以根據(jù)自己安裝的軟件,得到任何自己想要的鏡像。

那么鏡像最后的作用是什么呢?很好理解,回到Linux內(nèi)核上來運(yùn)行,通過鏡像來運(yùn)行時(shí)我們常常將提供的環(huán)境稱為容器。

以上內(nèi)容是從宏觀的角度看看Docker鏡像是什么,我們?cè)購奈⒂^的角度進(jìn)一步深入 Docker鏡像。剛才提到了“Debian鏡像中安裝MySQL 5.6,就成了mysql:5.6鏡像”,其實(shí)在此時(shí)Docker鏡像的層級(jí)概念就體現(xiàn)出來了。底層一個(gè)Debian操作系統(tǒng)鏡像,上面疊加一個(gè) mysql層,就完成了一個(gè)mysql鏡像的構(gòu)建。層級(jí)概念就不難理解,此時(shí)我們一般debian操作系統(tǒng)鏡像稱為mysql鏡像層的父鏡像。

層級(jí)管理的方式大大便捷了Docker鏡像的分發(fā)與存儲(chǔ)。說到分發(fā),大家自然會(huì)聯(lián)想到 Docker鏡像的靈活性,傳輸?shù)谋憬菪?,以及高超的移植性。Docker Hub,作為全球的鏡像倉庫,作為Docker生態(tài)中的數(shù)據(jù)倉庫,將全世界的Docker數(shù)據(jù)匯聚在一起,是Docker生態(tài)的命脈。

Docker有兩方面的技術(shù)非常重要,第一是Linux 容器方面的技術(shù),第二是Docker鏡像的技術(shù)。從技術(shù)本身來講,兩者的可復(fù)制性很強(qiáng),不存在絕對(duì)的技術(shù)難點(diǎn),然而Docker Hub由于存在大量的數(shù)據(jù)的原因,導(dǎo)致Docker Hub的可復(fù)制性幾乎不存在,這需要一個(gè)生態(tài)的營(yíng)造。

1.2 Docker鏡像的內(nèi)容

大致介紹了Docker鏡像是什么,我們來看看Docker鏡像中有哪些內(nèi)容?

介紹之前,我先分享一下,我個(gè)人在接觸Docker的兩年時(shí)間中,對(duì)Docker鏡像內(nèi)容認(rèn)識(shí)的變化。

第一階段:初步接觸Docker。相信很多愛好者都會(huì)和我一樣,有這樣一個(gè)認(rèn)識(shí):Docker 鏡像代表一個(gè)容器的文件系統(tǒng)內(nèi)容;

第二階段:初步接觸聯(lián)合文件系統(tǒng)。聯(lián)合文件系統(tǒng)的概念,讓我意識(shí)到鏡像層級(jí)管理的技術(shù),每一層鏡像都是容器文件系統(tǒng)內(nèi)容的一部分。

第三階段:研究鏡像與容器的關(guān)系:容器是一個(gè)動(dòng)態(tài)的環(huán)境,每一層鏡像中的文件屬于靜態(tài)內(nèi) 容,然而 Dockerfile 中的 ENV、VOLUME、CMD 等內(nèi)容最終都需要落實(shí)到容器的運(yùn)行環(huán)境中,而這些內(nèi)容均不可能直接坐落到每一層鏡像所包含的文件系統(tǒng)內(nèi)容中,那此時(shí)每一個(gè)Docker鏡像還會(huì)包含 json文件記錄與容器之間的關(guān)系。

因此,Docker鏡像的內(nèi)容主要包含兩個(gè)部分:第一,鏡像層文件內(nèi)容;第二,鏡像json文件。

1.3 Docker鏡像存儲(chǔ)位置

既然是說鏡像存儲(chǔ)的位置,那么應(yīng)該包含:鏡像層文件和鏡像json文件。如一個(gè)ubuntu:14.04鏡像,包含4個(gè)鏡像層,在aufs存儲(chǔ)驅(qū)動(dòng)的情況下,在磁盤上的情況可以如以下圖所示:

1.3.1 查看鏡像層組成:

我們可以通過命令 docker history ubuntu:14.04 查看 ubuntu:14.04,結(jié)果如下:

1.3.2 鏡像層文件內(nèi)容存儲(chǔ)

Docker 鏡像層的內(nèi)容一般在 Docker 根目錄的 aufs 路徑下,為 /var/lib/docker/aufs/diff/,具體情況如下: 

圖中顯示了鏡像 ubuntu:14.04 的 4 個(gè)鏡像層內(nèi)容,以及每個(gè)鏡像層內(nèi)的一級(jí)目錄情況。需要額外注意的是:鏡像層 d2a0ecffe6fa 中沒有任何內(nèi)容,也就是所謂的空鏡像。

1.3.3 鏡像 json 文件存儲(chǔ)

對(duì)于每一個(gè)鏡像層,Docker 都會(huì)保存一份相應(yīng)的 json 文件,json 文件的存儲(chǔ)路徑為 /var/lib/docker/graph,ubuntu:14.04 所有鏡像層的 json 文件存儲(chǔ)路徑展示如下:

除了 json 文件,大家還看到每一個(gè)鏡像層還包含一個(gè) layersize 文件,該文件主要記錄鏡像層內(nèi)部文件內(nèi)容的總大小。既然談到了鏡像 json 文件,為了給下文鋪墊,以下貼出 ubuntu:14.04 中空鏡像層 d2a0ecffe6fa 的 json 文件:

看完上述內(nèi)容,你們對(duì)怎么深入分析Docker鏡像原理有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章題目:怎么深入分析Docker鏡像原理
文章鏈接:http://bm7419.com/article32/phdepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、App設(shè)計(jì)、商城網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管