? ?
docker tag是什么,讓我們一起了解一下?
Docker如何拉取鏡像及標(biāo)簽 pull | tag,關(guān)于tag標(biāo)簽名拉取
我們可以發(fā)現(xiàn),雖然只拉取了一個(gè)java鏡像,但是拉取過程中,卻有多個(gè)Pull complete,5040bd298390和fce5728aad85等8個(gè),這是因?yàn)殓R像可以由多“層”(layers)組成,而這種“層”可以被其他的鏡像復(fù)用(有點(diǎn)像前端的組件或模塊),從而組成新鏡像。
如果拉取另一個(gè)鏡像,其中某些“層”已經(jīng)下載過,那么docker pull則只會(huì)拉取元數(shù)據(jù),而不會(huì)重復(fù)拉取“層”。
Docker的鏡像庫(kù)使用了內(nèi)容尋址儲(chǔ)存功能,而鏡像ID是由SHA256作為摘要代表了其中包含的配置及“層”,下面我們來證明一下,因?yàn)槲依〉氖莏ava:latest,即tag名為latest的鏡像,所以我需要找到和latest同版不同tag名的鏡像(本質(zhì)上是一個(gè)鏡像,只是標(biāo)簽名不一樣)
拉取tag名為8-jdk的鏡像:
$?docker?pull?java:8-jdk 8-jdk:?Pulling?from?library/java Digest:?sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status:?Downloaded?newer?image?for?java:8-jdk
很明顯,此處的拉取沒有看到“層”的信息,且摘要的sha256值也與tag名為latest的鏡像完全一樣,本質(zhì)上這是完全相同的兩個(gè)鏡像,由相同的“層”組成,所以不需要再次拉取了。
此時(shí),你們也許會(huì)和我產(chǎn)生相同的疑問,“完全相同?”,那是不是代表他們?cè)诓僮鳝h(huán)境中只存在一個(gè)?那么又用誰(shuí)的tag名來命名呢?我們來看如下輸出:
$?docker?images REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE java????????????????8-jdk???????????????d23bdf5b1b1b????????20?months?ago???????643MB java????????????????latest??????????????d23bdf5b1b1b????????20?months?ago???????643MB
我們可以清楚的看到,此時(shí)查看所有鏡像,有tag名分別為8-jdk和latest的鏡像羅列其上,java:8-jdk和 java:latest擁有相同的image ID,因?yàn)楸举|(zhì)上他們確實(shí)是 同一鏡像 ,只是由 不同標(biāo)簽 所標(biāo)記。
由于鏡像完全相同,則他們的“層”只儲(chǔ)存一次,且不會(huì)消耗額外的磁盤空間,即操作環(huán)境中只存在一個(gè)java鏡像,也可以用不同的tag標(biāo)記這個(gè)鏡像。
以上就是小編的分享,希望可以幫助到大家。