Docker学习之镜像删除的Untagged 和 Deleted
鏡像刪除的Untagged 和 Deleted
Untagged: ubuntu:14.04Deleted: sha256:a8e78858b03ba02c3df71d555f90057f890495aabc86e7a39396c68c87ed5ff2當(dāng)我們在docker中執(zhí)行docker images命令查看到一些不想使用的鏡像或容器時(shí),會(huì)執(zhí)行docker rmi -f xxx來對相應(yīng)的目標(biāo)進(jìn)行刪除操作,但相應(yīng)的命令執(zhí)行完成后會(huì)出現(xiàn)上面的兩種情況,一種是刪除成功,另一種則只是將鏡像對應(yīng)的標(biāo)簽解除了,所以二者有何區(qū)別呢?
Untagged 和 Deleted
Untagged
我們首先都知道鏡像的唯一標(biāo)識(shí)是其 ID 和摘要,但一個(gè)鏡像可以有多個(gè)標(biāo)簽
因此當(dāng)我們使用上面命令刪除鏡像的時(shí)候,實(shí)際上是在要求刪除某個(gè)標(biāo)簽的鏡像。所以首先需要做的是將滿足我們要求的所有鏡像標(biāo)簽都取消,這就是我們看到的 Untagged 的信息。因?yàn)橐粋€(gè)鏡像可以對應(yīng)多個(gè)標(biāo)簽,因此當(dāng)我們刪除了所指定的標(biāo)簽后,可能還有別的標(biāo)簽指向了這個(gè)鏡像,如果是這種情況,那么 Delete 行為就不會(huì)發(fā)生。所以并非所有的 docker rmi 都會(huì)產(chǎn)生刪除鏡像的行為,有可能僅僅是取消了某個(gè)標(biāo)簽而已。
Delated
當(dāng)一個(gè)鏡像所有的標(biāo)簽都被取消了,該鏡像很可能會(huì)失去了存在的意義,因此會(huì)觸發(fā)刪除行為。鏡像是多層存儲(chǔ)結(jié)構(gòu),因此在刪除的時(shí)候也是從上層向基礎(chǔ)層方向依次進(jìn)行判斷刪除。鏡像的多層結(jié)構(gòu)讓鏡像復(fù)用變動(dòng)非常容易,因此很有可能某個(gè)其它鏡像正依賴于當(dāng)前鏡像的某一層。這種情況,依舊不會(huì)觸發(fā)刪除該層的行為。直到?jīng)]有任何層依賴當(dāng)前層時(shí),才會(huì)真實(shí)的刪除當(dāng)前層。所以delated命令觸發(fā)的判斷機(jī)制要比untagged要難上許多。
用 docker images 命令來配合
像其它可以承接多個(gè)實(shí)體的命令一樣,可以使用 docker images -q 來配合使用 docker rmi,這樣可以成批的刪除希望刪除的鏡像。比如刪除虛懸鏡像的指令是:
$ docker rmi $(docker images -q -f dangling=true)比如,我們需要?jiǎng)h除所有倉庫名為 redis 的鏡像:
$ docker rmi $(docker images -q redis)或者刪除所有在 mongo:3.2 之前的鏡像:
$ docker rmi $(docker images -q -f before=mongo:3.2)總結(jié)
以上是生活随笔為你收集整理的Docker学习之镜像删除的Untagged 和 Deleted的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中sofa并发访问,云上的日子:
- 下一篇: 目前微型计算机的内存储量一般是多大的,微