docker清理無(wú)用鏡像的方法詳解
清除docker無(wú)用鏡像
查看 docker 占用的資源
在進(jìn)行資源清理之前我們有必要搞清楚 docker 都占用了哪些系統(tǒng)的資源。這需要綜合使用不同的命令來(lái)完成。
- docker container ls:默認(rèn)只列出正在運(yùn)行的容器,-a 選項(xiàng)會(huì)列出包括停止的所有容器。
- docker image ls:列出鏡像信息,-a 選項(xiàng)會(huì)列出 intermediate 鏡像(就是其它鏡像依賴的層)。
- docker volume ls:列出數(shù)據(jù)卷。
- docker network ls:列出 network。
- docker info:顯示系統(tǒng)級(jí)別的信息,比如容器和鏡像的數(shù)量等。
通過(guò)這些命令查看 docker 使用的資源情況后,相信你已經(jīng)決定要清理 docker 占用的一些資源了!讓我們先從那些未被使用的資源開(kāi)始。
查看鏡像
按名稱排序
docker images | sort -k7 -h
docker images |grep none 會(huì)發(fā)現(xiàn)有好多無(wú)用鏡像
只刪除那些未被使用的資源
Docker 提供了方便的 docker system prune 命令來(lái)刪除那些已停止的容器、dangling 鏡像、未被容器引用的 network 和構(gòu)建過(guò)程中的 cache:
$ docker system prune
使用以下命令清理已經(jīng)停止運(yùn)行的docker容器
docker rm $(docker ps --all -q -f status=exited)
1、通過(guò)標(biāo)簽刪除鏡像
通過(guò)如下兩個(gè)都可以刪除鏡像:
docker rmi [image]
或者:
docker image rm [image]
支持的子命令如下:
- -f, -force: 強(qiáng)制刪除鏡像,即便有容器引用該鏡像;
- -no-prune: 不要?jiǎng)h除未帶標(biāo)簽的父鏡像;
2、通過(guò) ID 刪除鏡像
除了通過(guò)標(biāo)簽名稱來(lái)刪除鏡像,我們還可以通過(guò)制定鏡像 ID, 來(lái)刪除鏡像,如:
docker rmi ID
一旦制定了通過(guò) ID 來(lái)刪除鏡像,它會(huì)先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。
3、刪除鏡像的限制
先刪除引用這個(gè)鏡像的容器;
再刪除這個(gè)鏡像;
也就是,根據(jù)上圖中提示的,引用該鏡像的容器 ID, 執(zhí)行刪除命令:
docker rm ID
然后,再執(zhí)行刪除鏡像的命令:
docker rmi ID
4、清理鏡像
我們?cè)谑褂?Docker 一段時(shí)間后,系統(tǒng)一般都會(huì)殘存一些臨時(shí)的、沒(méi)有被使用的鏡像文件,可以通過(guò)以下命令進(jìn)行清理:
docker image prune
它支持的子命令有:
- -a, --all: 刪除所有沒(méi)有用的鏡像,而不僅僅是臨時(shí)文件;
- -f, --force:強(qiáng)制刪除鏡像文件,無(wú)需彈出提示確認(rèn);
方法補(bǔ)充
docker 清理未使用的鏡像的命令
在 Docker 中清理未使用的鏡像(包括懸空鏡像和完全未被引用的鏡像),可以使用以下命令:
1. ?刪除所有懸空鏡像?(推薦常用)
docker image prune
?懸空鏡像 (dangling images)?? 是指沒(méi)有標(biāo)簽且未被任何容器引用的鏡像(通常是構(gòu)建過(guò)程中的臨時(shí)層)。
添加 -f 強(qiáng)制刪除(無(wú)需確認(rèn)):
docker image prune -f
2. ?刪除所有未被使用的鏡像?(謹(jǐn)慎!)
docker image prune -a
?**-a 會(huì)刪除所有未被容器或標(biāo)簽引用的鏡像**?(包括有名字但未被使用的鏡像)。
添加 -f 強(qiáng)制刪除:
docker image prune -a -f
3. ?清理整個(gè) Docker 系統(tǒng)?(停止的容器 + 懸空鏡像 + 網(wǎng)絡(luò) + 構(gòu)建緩存等)
docker system prune
添加 -a 會(huì)額外刪除未被使用的鏡像?(不僅僅是懸空鏡像):
docker system prune -a
強(qiáng)制清理(跳過(guò)確認(rèn)提示):
docker system prune -a -f
注意事項(xiàng):
?懸空鏡像 vs 未使用鏡像?:
- docker image prune → 只刪除懸空鏡像?(無(wú)名鏡像)。
- docker image prune -a → 刪除所有未被引用的鏡像?(包括有名字但未被容器使用的鏡像)。
?數(shù)據(jù)無(wú)價(jià)!??
執(zhí)行 prune -a 前確保鏡像真的不需要(例如,未來(lái)啟動(dòng)容器可能會(huì)用到的鏡像也會(huì)被刪除)。
建議先手動(dòng)檢查:
# 列出懸空鏡像
docker images -f dangling=true
# 列出所有鏡像(按占用空間排序)
docker images --format "{{.ID}}\t{{.Repository}}\t{{.Size}}" | sort -k 3 -h
?自動(dòng)清理?:
可通過(guò)配置 Docker Daemon 的 docker-compose.yml 或修改 /etc/docker/daemon.json 實(shí)現(xiàn)定時(shí)清理,例如:
{
"features": {
"buildkit": true
},
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "10GB"
}
}
}
總結(jié)常用命令:
| 場(chǎng)景 | 命令 |
|---|---|
| ?安全清理懸空鏡像? | docker image prune -f |
| ?徹底清理未使用的鏡像? | docker image prune -a -f(謹(jǐn)慎?。?/td> |
| ?全面清理 Docker 系統(tǒng)垃圾? | docker system prune -f(不包含未使用鏡像) |
到此這篇關(guān)于docker清理無(wú)用鏡像的方法詳解的文章就介紹到這了,更多相關(guān)docker清理鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法
這篇文章主要介紹了docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Docker?環(huán)境?Nacos2?MySQL8的詳細(xì)操作
本文介紹?docker?環(huán)境下安裝并單機(jī)運(yùn)行?Nacos2,使用?docker?環(huán)境下的?MySQL?8?存儲(chǔ)數(shù)據(jù)?,對(duì)Docker?環(huán)境?Nacos2?MySQL8相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2022-09-09
Docker磁盤(pán)空間清理的方法實(shí)現(xiàn)
在使用Docker的過(guò)程中,系統(tǒng)會(huì)逐漸積累一些無(wú)用的垃圾文件,占據(jù)寶貴的磁盤(pán)空間并影響系統(tǒng)性,本文主要介紹了Docker磁盤(pán)空間清理的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Docker?部署分布式搜索引擎?Elastic?Search的詳細(xì)過(guò)程
Elasticsearch是一款非常強(qiáng)大的開(kāi)源搜索引擎,具備非常多強(qiáng)大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容,這篇文章主要介紹了Docker?部署分布式搜索引擎?Elastic?Search,需要的朋友可以參考下2023-02-02

