Docker 刪除及清理鏡像的方法
一、通過標(biāo)簽刪除鏡像
通過如下兩個(gè)都可以刪除鏡像:
docker rmi [image]
或者:
docker image rm [image]
支持的子命令如下:
-f, -force: 強(qiáng)制刪除鏡像,即便有容器引用該鏡像;-no-prune: 不要?jiǎng)h除未帶標(biāo)簽的父鏡像;

例如,我們想刪除上章節(jié)創(chuàng)建的 allen_mysql:5.7 鏡像,命令如下:
docker rmi allen_mysql:5.7

從上面章節(jié)中,我們知道 allen_mysql:5.7 和 docker.io/mysql:5.7 實(shí)際上指向的是同一個(gè)鏡像,那么,您可以能會(huì)有疑問,我刪除了 allen_mysql:5.7, 會(huì)不會(huì)將 docker.io/mysql:5.7 鏡像也給刪除了?
實(shí)際上,當(dāng)同一個(gè)鏡像擁有多個(gè)標(biāo)簽時(shí),執(zhí)行 docker rmi 命令,只是會(huì)刪除了該鏡像眾多標(biāo)簽中,您指定的標(biāo)簽而已,并不會(huì)影響原始的那個(gè)鏡像文件。
不信的話,我們可以執(zhí)行 docker images 命令,來看下 docker.io/mysql:5.7 鏡像還在不在:

可以看到,docker.io/mysql:5.7 鏡像依然存在!
那么,如果某個(gè)鏡像不存在多個(gè)標(biāo)簽,當(dāng)且僅當(dāng)只有一個(gè)標(biāo)簽時(shí),執(zhí)行刪除命令時(shí),您就要小心了,這會(huì)徹底刪除鏡像。
例如,這個(gè)時(shí)候,我們?cè)賵?zhí)行 docker rmi docker.io/mysql:5.7 命令:

從上圖可以看到,我們已經(jīng)刪除了 docker.io/mysql:5.7 鏡像的所有文件層。該鏡像在本地已不復(fù)存在了!
二、通過 ID 刪除鏡像
除了通過標(biāo)簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:
docker rmi ee7cbd482336
一旦制定了通過 ID 來刪除鏡像,它會(huì)先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。
三、刪除鏡像的限制
刪除鏡像很簡(jiǎn)單,但也不是我們何時(shí)何地都能刪除的,它存在一些限制條件。
當(dāng)通過該鏡像創(chuàng)建的容器未被銷毀時(shí),鏡像是無(wú)法被刪除的。為了驗(yàn)證這一點(diǎn),我們來做個(gè)試驗(yàn)。首先,我們通過 docker pull alpine 命令,拉取一個(gè)最新的 alpine 鏡像, 然后啟動(dòng)鏡像,讓其輸出 hello, docker!:

接下來,我們來刪除這個(gè)鏡像試試:

可以看到提示信息,無(wú)法刪除該鏡像,因?yàn)橛腥萜髡谝盟?!同時(shí),這段信息還告訴我們,除非通過添加 -f 子命令,也就是強(qiáng)制刪除,才能移除掉該鏡像!
docker rmi -f docker.io/alpine
但是,我們一般不推薦這樣暴力的做法,正確的做法應(yīng)該是:
- 先刪除引用這個(gè)鏡像的容器;
- 再刪除這個(gè)鏡像;
也就是,根據(jù)上圖中提示的,引用該鏡像的容器 ID (9d59e2278553), 執(zhí)行刪除命令:
docker rm 9d59e2278553
然后,再執(zhí)行刪除鏡像的命令:
docker rmi 5cb3aa00f899

這個(gè)時(shí)候,就能正常刪除了!
四、清理鏡像
我們?cè)谑褂?Docker 一段時(shí)間后,系統(tǒng)一般都會(huì)殘存一些臨時(shí)的、沒有被使用的鏡像文件,可以通過以下命令進(jìn)行清理:
docker image prune
它支持的子命令有:
-a, --all: 刪除所有沒有用的鏡像,而不僅僅是臨時(shí)文件;-f, --force:強(qiáng)制刪除鏡像文件,無(wú)需彈出提示確認(rèn);
另外,執(zhí)行完 docker image prune 命令后,還是告訴我們釋放了多少存儲(chǔ)空間!
到此這篇關(guān)于Docker 刪除及清理鏡像的方法的文章就介紹到這了,更多相關(guān)Docker 刪除及清理鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
怎樣獲取docker動(dòng)態(tài)分配的port
這篇文章給大家主要介紹了如何獲取docker動(dòng)態(tài)分配的port,文中通過分析、解決以及后續(xù)可能遇到的問題都給大家詳細(xì)介紹了,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10
使用 Azure Container Registry 儲(chǔ)存鏡像的問題
Azure Container Registry(容器注冊(cè)表)是基于 Docker Registry 2.0規(guī)范的托管專用 Docker 注冊(cè)表服務(wù)。這篇文章主要介紹了使用 Azure Container Registry 儲(chǔ)存鏡像,需要的朋友可以參考下2021-05-05
Docker配置國(guó)內(nèi)加速器加速鏡像下載的方法
本篇文章主要介紹了Docker配置國(guó)內(nèi)加速器加速鏡像下載的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

