Docker 刪除及清理鏡像的方法
一、通過標(biāo)簽刪除鏡像
通過如下兩個都可以刪除鏡像:
docker rmi [image]
或者:
docker image rm [image]
支持的子命令如下:
-f, -force
: 強(qiáng)制刪除鏡像,即便有容器引用該鏡像;-no-prune
: 不要刪除未帶標(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
實際上指向的是同一個鏡像,那么,您可以能會有疑問,我刪除了 allen_mysql:5.7
, 會不會將 docker.io/mysql:5.7
鏡像也給刪除了?
實際上,當(dāng)同一個鏡像擁有多個標(biāo)簽時,執(zhí)行 docker rmi
命令,只是會刪除了該鏡像眾多標(biāo)簽中,您指定的標(biāo)簽而已,并不會影響原始的那個鏡像文件。
不信的話,我們可以執(zhí)行 docker images
命令,來看下 docker.io/mysql:5.7
鏡像還在不在:
可以看到,docker.io/mysql:5.7
鏡像依然存在!
那么,如果某個鏡像不存在多個標(biāo)簽,當(dāng)且僅當(dāng)只有一個標(biāo)簽時,執(zhí)行刪除命令時,您就要小心了,這會徹底刪除鏡像。
例如,這個時候,我們再執(zhí)行 docker rmi docker.io/mysql:5.7
命令:
從上圖可以看到,我們已經(jīng)刪除了 docker.io/mysql:5.7
鏡像的所有文件層。該鏡像在本地已不復(fù)存在了!
二、通過 ID 刪除鏡像
除了通過標(biāo)簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:
docker rmi ee7cbd482336
一旦制定了通過 ID 來刪除鏡像,它會先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。
三、刪除鏡像的限制
刪除鏡像很簡單,但也不是我們何時何地都能刪除的,它存在一些限制條件。
當(dāng)通過該鏡像創(chuàng)建的容器未被銷毀時,鏡像是無法被刪除的。為了驗證這一點,我們來做個試驗。首先,我們通過 docker pull alpine
命令,拉取一個最新的 alpine
鏡像, 然后啟動鏡像,讓其輸出 hello, docker!
:
接下來,我們來刪除這個鏡像試試:
可以看到提示信息,無法刪除該鏡像,因為有容器正在引用他!同時,這段信息還告訴我們,除非通過添加 -f
子命令,也就是強(qiáng)制刪除,才能移除掉該鏡像!
docker rmi -f docker.io/alpine
但是,我們一般不推薦這樣暴力的做法,正確的做法應(yīng)該是:
- 先刪除引用這個鏡像的容器;
- 再刪除這個鏡像;
也就是,根據(jù)上圖中提示的,引用該鏡像的容器 ID (9d59e2278553
), 執(zhí)行刪除命令:
docker rm 9d59e2278553
然后,再執(zhí)行刪除鏡像的命令:
docker rmi 5cb3aa00f899
這個時候,就能正常刪除了!
四、清理鏡像
我們在使用 Docker 一段時間后,系統(tǒng)一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進(jìn)行清理:
docker image prune
它支持的子命令有:
-a, --all
: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;-f, --force
:強(qiáng)制刪除鏡像文件,無需彈出提示確認(rèn);
另外,執(zhí)行完 docker image prune
命令后,還是告訴我們釋放了多少存儲空間!
到此這篇關(guān)于Docker 刪除及清理鏡像的方法的文章就介紹到這了,更多相關(guān)Docker 刪除及清理鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker安裝openwrt immortalwrt全過程
本文主要介紹了如何通過OpenWrt和Docker結(jié)合使用,以提供路由器的功能并接管無法安裝軟件的Switch的流量,首先,通過阿里鏡像加速下載并安裝Docker,然后配置網(wǎng)絡(luò),包括開啟網(wǎng)卡混雜模式和創(chuàng)建虛擬網(wǎng)絡(luò)MACVLAN,接著,在OpenWrt中配置網(wǎng)絡(luò),最后拉取OpenWrt鏡像并啟動2024-10-10將Docker鏡像從服務(wù)器A遷移到服務(wù)器B的三種方法
這篇文章主要介紹了將postgres:15鏡像從服務(wù)器A傳到服務(wù)器B的三種方法:推薦使用Docker Save和Load,通過DockerHub或私有倉庫中轉(zhuǎn),適用于內(nèi)網(wǎng)環(huán)境,每種方法涉及保存/傳輸/加載或推送步驟,注意權(quán)限及網(wǎng)絡(luò)條件,需要的朋友可以參考下2025-06-06Docker 跨主機(jī)容器間相互訪問的實現(xiàn)
本文主要介紹了Docker 跨主機(jī)容器間相互訪問的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01快速使用docker-compose部署clickhouse的教程
ClickHouse 的工作速度比傳統(tǒng)方法快 100-1000 倍。它適用于大數(shù)據(jù)、業(yè)務(wù)分析和時間序列數(shù)據(jù)。在這個小教程中,我將向您展示如何以最少的設(shè)置安裝 ClickHouse,感興趣的朋友一起看看吧2021-11-11