docker清理無用鏡像的方法詳解
清除docker無用鏡像
查看 docker 占用的資源
在進(jìn)行資源清理之前我們有必要搞清楚 docker 都占用了哪些系統(tǒng)的資源。這需要綜合使用不同的命令來完成。
- 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ù)量等。
通過這些命令查看 docker 使用的資源情況后,相信你已經(jīng)決定要清理 docker 占用的一些資源了!讓我們先從那些未被使用的資源開始。
查看鏡像
按名稱排序
docker images | sort -k7 -h
docker images |grep none 會(huì)發(fā)現(xiàn)有好多無用鏡像
只刪除那些未被使用的資源
Docker 提供了方便的 docker system prune 命令來刪除那些已停止的容器、dangling 鏡像、未被容器引用的 network 和構(gòu)建過程中的 cache:
$ docker system prune
使用以下命令清理已經(jīng)停止運(yùn)行的docker容器
docker rm $(docker ps --all -q -f status=exited)
1、通過標(biāo)簽刪除鏡像
通過如下兩個(gè)都可以刪除鏡像:
docker rmi [image]
或者:
docker image rm [image]
支持的子命令如下:
- -f, -force: 強(qiáng)制刪除鏡像,即便有容器引用該鏡像;
- -no-prune: 不要?jiǎng)h除未帶標(biāo)簽的父鏡像;
2、通過 ID 刪除鏡像
除了通過標(biāo)簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:
docker rmi ID
一旦制定了通過 ID 來刪除鏡像,它會(huì)先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。
3、刪除鏡像的限制
先刪除引用這個(gè)鏡像的容器;
再刪除這個(gè)鏡像;
也就是,根據(jù)上圖中提示的,引用該鏡像的容器 ID, 執(zhí)行刪除命令:
docker rm ID
然后,再執(zhí)行刪除鏡像的命令:
docker rmi ID
4、清理鏡像
我們?cè)谑褂?Docker 一段時(shí)間后,系統(tǒng)一般都會(huì)殘存一些臨時(shí)的、沒有被使用的鏡像文件,可以通過以下命令進(jìn)行清理:
docker image prune
它支持的子命令有:
- -a, --all: 刪除所有沒有用的鏡像,而不僅僅是臨時(shí)文件;
- -f, --force:強(qiáng)制刪除鏡像文件,無需彈出提示確認(rèn);
方法補(bǔ)充
docker 清理未使用的鏡像的命令
在 Docker 中清理未使用的鏡像(包括懸空鏡像和完全未被引用的鏡像),可以使用以下命令:
1. ?刪除所有懸空鏡像?(推薦常用)
docker image prune
?懸空鏡像 (dangling images)?? 是指沒有標(biāo)簽且未被任何容器引用的鏡像(通常是構(gòu)建過程中的臨時(shí)層)。
添加 -f 強(qiáng)制刪除(無需確認(rèn)):
docker image prune -f
2. ?刪除所有未被使用的鏡像?(謹(jǐn)慎?。?/p>
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)制清理(跳過確認(rèn)提示):
docker system prune -a -f
注意事項(xiàng):
?懸空鏡像 vs 未使用鏡像?:
- docker image prune → 只刪除懸空鏡像?(無名鏡像)。
- docker image prune -a → 刪除所有未被引用的鏡像?(包括有名字但未被容器使用的鏡像)。
?數(shù)據(jù)無價(jià)!??
執(zhí)行 prune -a 前確保鏡像真的不需要(例如,未來啟動(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)清理?:
可通過配置 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清理無用鏡像的方法詳解的文章就介紹到這了,更多相關(guān)docker清理鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux下Docker及portainer相關(guān)配置方法
本文以CentOS 7為例,安裝docker CE版本,docker有兩種版本,社區(qū)版本CE和企業(yè)版本EE,通過實(shí)例代碼給大家介紹了Linux下Docker及portainer相關(guān)配置方法,感興趣的朋友跟隨小編一起看看吧2019-06-06docker創(chuàng)建鏡像并上傳云端服務(wù)器的實(shí)現(xiàn)示例
鏡像是一種輕量級(jí)、可執(zhí)行的獨(dú)立軟件包,用來打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,本文介紹了如何使用Docker創(chuàng)建鏡像,并將其上傳到云端,感興趣的可以了解一下2023-08-08解決Docker鏡像拉取超時(shí)及優(yōu)化網(wǎng)絡(luò)配置的方法(failed to do request
在使用 Docker 構(gòu)建和部署應(yīng)用時(shí),拉取鏡像是一個(gè)關(guān)鍵的步驟,然而,在一些網(wǎng)絡(luò)環(huán)境中,特別是企業(yè)內(nèi)部網(wǎng)或受限網(wǎng)絡(luò)環(huán)境中,可能會(huì)遇到 Docker 鏡像拉取失敗或超時(shí)的問題,這篇博客將詳細(xì)探討如何應(yīng)對(duì) Docker 鏡像拉取超時(shí)的問題,需要的朋友可以參考下2024-11-11Linux環(huán)境下使用Docker搭建Jenkins容器的方法步驟
本文主要介紹了Linux環(huán)境下使用Docker搭建Jenkins容器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題
本篇文章主要介紹了解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04