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

