網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、通過(guò)標(biāo)簽刪除鏡像
通過(guò)如下兩個(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ì)有疑問(wèn),我刪除了?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
?命令,來(lái)看下?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ù)存在了!
二、通過(guò) ID 刪除鏡像
除了通過(guò)標(biāo)簽名稱來(lái)刪除鏡像,我們還可以通過(guò)制定鏡像 ID, 來(lái)刪除鏡像,如:
docker rmi ee7cbd482336
一旦制定了通過(guò) ID 來(lái)刪除鏡像,它會(huì)先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。
三、刪除鏡像的限制
刪除鏡像很簡(jiǎn)單,但也不是我們何時(shí)何地都能刪除的,它存在一些限制條件。
當(dāng)通過(guò)該鏡像創(chuàng)建的容器未被銷毀時(shí),鏡像是無(wú)法被刪除的。為了驗(yàn)證這一點(diǎn),我們來(lái)做個(gè)試驗(yàn)。首先,我們通過(guò)?docker pull alpine
?命令,拉取一個(gè)最新的?alpine
?鏡像, 然后啟動(dòng)鏡像,讓其輸出?hello, docker!
:
接下來(lái),我們來(lái)刪除這個(gè)鏡像試試:
可以看到提示信息,無(wú)法刪除該鏡像,因?yàn)橛腥萜髡谝盟⊥瑫r(shí),這段信息還告訴我們,除非通過(guò)添加?-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í)的、沒有被使用的鏡像文件,可以通過(guò)以下命令進(jìn)行清理:
docker image prune
它支持的子命令有:
-
-a, --all
: 刪除所有沒有用的鏡像,而不僅僅是臨時(shí)文件; -
-f, --force
:強(qiáng)制刪除鏡像文件,無(wú)需彈出提示確認(rèn);
另外,執(zhí)行完?docker image prune
?命令后,還是告訴我們釋放了多少存儲(chǔ)空間!
原文鏈接:https://blog.csdn.net/qq_18671415/article/details/116231314
相關(guān)推薦
- 2022-05-22 Python學(xué)習(xí)之os包使用教程詳解_python
- 2022-12-07 React元素與組件的區(qū)別示例詳解_React
- 2022-10-07 react性能優(yōu)化useMemo與useCallback使用對(duì)比詳解_React
- 2022-05-08 C++類中隱藏的幾個(gè)默認(rèn)函數(shù)你知道嗎_C 語(yǔ)言
- 2022-07-25 Android?嵌套?Intent?隱患及解決方案_Android
- 2022-05-01 你需要掌握的20個(gè)Python常用技巧_python
- 2022-12-05 單步調(diào)試?step?into/step?out/step?over?區(qū)別說(shuō)明_python
- 2022-08-15 Android開發(fā)gradle拉取依賴的加速配置_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支