? ?
docker tag是什么,讓我們一起了解一下?
Docker如何拉取鏡像及標簽 pull | tag,關于tag標簽名拉取
我們可以發現,雖然只拉取了一個java鏡像,但是拉取過程中,卻有多個Pull complete,5040bd298390和fce5728aad85等8個,這是因為鏡像可以由多“層”(layers)組成,而這種“層”可以被其他的鏡像復用(有點像前端的組件或模塊),從而組成新鏡像。
如果拉取另一個鏡像,其中某些“層”已經下載過,那么docker pull則只會拉取元數據,而不會重復拉取“層”。
Docker的鏡像庫使用了內容尋址儲存功能,而鏡像ID是由SHA256作為摘要代表了其中包含的配置及“層”,下面我們來證明一下,因為我拉取的是java:latest,即tag名為latest的鏡像,所以我需要找到和latest同版不同tag名的鏡像(本質上是一個鏡像,只是標簽名不一樣)
拉取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的鏡像完全一樣,本質上這是完全相同的兩個鏡像,由相同的“層”組成,所以不需要再次拉取了。
此時,你們也許會和我產生相同的疑問,“完全相同?”,那是不是代表他們在操作環境中只存在一個?那么又用誰的tag名來命名呢?我們來看如下輸出:
$?docker?images REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE java????????????????8-jdk???????????????d23bdf5b1b1b????????20?months?ago???????643MB java????????????????latest??????????????d23bdf5b1b1b????????20?months?ago???????643MB
我們可以清楚的看到,此時查看所有鏡像,有tag名分別為8-jdk和latest的鏡像羅列其上,java:8-jdk和 java:latest擁有相同的image ID,因為本質上他們確實是 同一鏡像 ,只是由 不同標簽 所標記。
由于鏡像完全相同,則他們的“層”只儲存一次,且不會消耗額外的磁盤空間,即操作環境中只存在一個java鏡像,也可以用不同的tag標記這個鏡像。
以上就是小編的分享,希望可以幫助到大家。