這篇文章將為大家詳細(xì)講解有關(guān)Docker鏡像的緩存特性是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)靜海,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
Docker 會(huì)緩存已有鏡像的鏡像層,構(gòu)建新鏡像時(shí),如果某鏡像層已經(jīng)存在,就直接使用,無(wú)需重新創(chuàng)建。
舉例說(shuō)明。
在前面的 Dockerfile 中添加一點(diǎn)新內(nèi)容,往鏡像中復(fù)制一個(gè)文件:
root@ubuntu:~# ls ①
Dockerfile testfile
root@ubuntu:~#
root@ubuntu:~# docker build -t ubuntu-with-vi-dockerfile-2 .
Sending build context to Docker daemon 32.77 kB
Step 1 : FROM ubuntu
---> f753707788c5
Step 2 : RUN apt-get update && apt-get install -y vim
---> Using cache ②
---> 35ca89798937
Step 3 : COPY testfile / ③
---> 8d02784a78f4
Removing intermediate container bf2b4040f4e9
Successfully built 8d02784a78f4
① 確保 testfile 已存在。
② 重點(diǎn)在這里:之前已經(jīng)運(yùn)行過(guò)相同的 RUN 指令,這次直接使用緩存中的鏡像層 35ca89798937。
③ 執(zhí)行 COPY 指令。
其過(guò)程是啟動(dòng)臨時(shí)容器,復(fù)制 testfile,提交新的鏡像層 8d02784a78f4,刪除臨時(shí)容器。
在 ubuntu-with-vi-dockerfile 鏡像上直接添加一層就得到了新的鏡像 ubuntu-with-vi-dockerfile-2。
如果我們希望在構(gòu)建鏡像時(shí)不使用緩存,可以在 docker build
命令中加上 --no-cache
參數(shù)。
Dockerfile 中每一個(gè)指令都會(huì)創(chuàng)建一個(gè)鏡像層,上層是依賴于下層的。無(wú)論什么時(shí)候,只要某一層發(fā)生變化,其上面所有層的緩存都會(huì)失效。
也就是說(shuō),如果我們改變 Dockerfile 指令的執(zhí)行順序,或者修改或添加指令,都會(huì)使緩存失效。
舉例說(shuō)明,比如交換前面 RUN 和 COPY 的順序。
雖然在邏輯上這種改動(dòng)對(duì)鏡像的內(nèi)容沒(méi)有影響,但由于分層的結(jié)構(gòu)特性,Docker 必須重建受影響的鏡像層。
root@ubuntu:~# docker build -t ubuntu-with-vi-dockerfile-3 .
Sending build context to Docker daemon 37.89 kB
Step 1 : FROM ubuntu
---> f753707788c5
Step 2 : COPY testfile /
---> bc87c9710f40
Removing intermediate container 04ff324d6af5
Step 3 : RUN apt-get update && apt-get install -y vim
---> Running in 7f0fcb5ee373
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
......
從上面的輸出可以看到生成了新的鏡像層 bc87c9710f40,緩存已經(jīng)失效。
除了構(gòu)建時(shí)使用緩存,Docker 在下載鏡像時(shí)也會(huì)使用。例如我們下載 httpd 鏡像。
docker pull 命令輸出顯示第一層(base 鏡像)已經(jīng)存在,不需要下載。
由 Dockerfile 可知 httpd 的 base 鏡像為 debian,正好之前已經(jīng)下載過(guò) debian 鏡像,所以有緩存可用。通過(guò) docker history 可以進(jìn)一步驗(yàn)證。
關(guān)于Docker鏡像的緩存特性是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章名稱:Docker鏡像的緩存特性是怎樣的
文章地址:http://m.newbst.com/article28/gejjcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、Google、靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、軟件開發(fā)、ChatGPT
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)