Docker鏡像大小查看和排序方法小結(jié)
為什么需要關(guān)注 Docker 鏡像大?。?/h2>
在深入技術(shù)細(xì)節(jié)前,讓我們先理解為什么鏡像大小如此重要。Docker 鏡像大小直接影響以下幾個(gè)方面:
- 存儲(chǔ)成本:大型鏡像占用更多磁盤(pán)空間,在開(kāi)發(fā)環(huán)境中可能導(dǎo)致磁盤(pán)快速耗盡
- 傳輸效率:鏡像越大,推送(push)和拉取(pull)所需時(shí)間越長(zhǎng)
- 部署速度:容器啟動(dòng)時(shí)間與鏡像大小直接相關(guān)
- 安全性:更大的鏡像通常包含更多不必要的組件,增加了攻擊面
根據(jù) Docker 官方統(tǒng)計(jì),優(yōu)化后的鏡像通??梢詼p少 70%以上的大小,這意味著更快的 CI/CD 流水線和更高效的資源利用。
基礎(chǔ)命令解析:docker images
docker images
是查看本地 Docker 鏡像的基礎(chǔ)命令,默認(rèn)輸出如下:
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 1d622ef86b13 2 weeks ago 72.9MB nginx latest 2bdc49f2f8a1 3 weeks ago 142MB
默認(rèn)情況下,鏡像按倉(cāng)庫(kù)名稱排序,而非大小。要獲取更有價(jià)值的信息,我們需要對(duì)輸出進(jìn)行定制。
方法一:簡(jiǎn)單按大小降序排列
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r
這個(gè)命令的核心部分解析:
--format
:自定義輸出格式"{{.Size}}\t{{.Repository}}:{{.Tag}}"
:只顯示大小和完整鏡像名,用制表符分隔sort -h -r
:-h
表示"human-readable"(人類(lèi)可讀格式),-r
表示逆序(從大到?。?/li>
實(shí)際應(yīng)用場(chǎng)景:當(dāng)你需要快速找出哪個(gè)鏡像占用了最多空間時(shí),這個(gè)簡(jiǎn)潔的命令非常有用。
方法二:增強(qiáng)版排序輸出
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}" | sort -h -r | column -t -s $'\t'
這個(gè)改進(jìn)版本增加了鏡像 ID,并通過(guò)column -t
美化為表格格式:
{{.ID}}
:添加鏡像 ID 列column -t -s $'\t'
:將制表符分隔的內(nèi)容對(duì)齊為整齊的列
輸出示例:
3.45GB ubuntu:latest 1d622ef86b13 1.89GB nginx:alpine 2bdc49f2f8a1 567MB busybox:latest a84a6faf4a8e
方法三:保留表頭的完整排序方案
docker images --format "table {{.Size}}\t{{.Repository}}:{{.Tag}}" | (read -r; printf "%s\n" "$REPLY"; sort -h -r)
這個(gè)復(fù)雜命令實(shí)現(xiàn)了:
- 使用
table
關(guān)鍵字保留表頭 read -r; printf "%s\n" "$REPLY"
:先讀取并輸出第一行(表頭)- 然后對(duì)剩余內(nèi)容進(jìn)行排序
技術(shù)難點(diǎn)解析:直接對(duì)表頭和數(shù)據(jù)一起排序會(huì)導(dǎo)致表頭出現(xiàn)在奇怪的位置,這個(gè)技巧完美解決了這個(gè)問(wèn)題。
方法四:跨平臺(tái)兼容方案
某些舊版 Linux 系統(tǒng)可能不支持sort -h
參數(shù),可以使用以下替代方案:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sed 's/GB/*1024*1024/;s/MB/*1024/;s/KB//' | awk '{printf "%.0f %s\n", $1, $2}' | sort -n -r | awk '{$1=$1/1024; print $1"MB", $2}'
這個(gè)復(fù)雜管道:
- 使用
sed
將 GB/MB 轉(zhuǎn)換為 KB awk
計(jì)算具體數(shù)值sort -n
數(shù)值排序- 最后轉(zhuǎn)換回 MB 顯示
高級(jí)技巧:結(jié)合其他工具深入分析
1. 找出可以刪除的大型鏡像
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}" | sort -h -r | head -n 5
head -n 5
只顯示最大的 5 個(gè)鏡像,便于針對(duì)性清理。
2. 計(jì)算所有鏡像總大小
docker images --format "{{.Size}}" | sed 's/GB/*1024/;s/MB//;s/KB//\/1024/' | awk '{sum+=$1} END {print sum "MB"}'
3. 結(jié)合 grep 過(guò)濾特定鏡像
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r | grep -v "<none>"
排除那些沒(méi)有標(biāo)簽的中間鏡像。
到此這篇關(guān)于Docker鏡像大小查看和排序方法小結(jié)的文章就介紹到這了,更多相關(guān)Docker鏡像大小排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker默認(rèn)路徑存儲(chǔ)不足解決過(guò)程
這篇文章主要給大家介紹了關(guān)于docker默認(rèn)路徑存儲(chǔ)不足的解決過(guò)程,Docker存儲(chǔ)空間不足的錯(cuò)誤通常表明Docker Daemon分配的本地磁盤(pán)空間用盡,文中通過(guò)代碼將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04使用docker build kit構(gòu)建樹(shù)莓派上可用的Docker鏡像
這篇文章主要介紹了使用docker build kit構(gòu)建樹(shù)莓派上可用的Docker鏡像,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Docker?Desktop無(wú)法正常啟動(dòng)解決(failed?to?start...)
有一段時(shí)間沒(méi)有使用docker了,突然要用到結(jié)果發(fā)現(xiàn)docker?desktop用不了了,這篇文章主要給大家介紹了關(guān)于Docker?Desktop無(wú)法正常啟動(dòng)解決的過(guò)程,,需要的朋友可以參考下2023-01-01Docker 運(yùn)行時(shí)的用戶與組管理的方法
這篇文章主要介紹了Docker 運(yùn)行時(shí)的用戶與組管理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Docker部署php運(yùn)行環(huán)境(php-fpm+nginx)
Docker?是一種流行的容器化平臺(tái),可以幫助開(kāi)發(fā)人員快速創(chuàng)建、部署和管理容器化應(yīng)用程序,本文將介紹如何使用?Docker?搭建?PHP?開(kāi)發(fā)環(huán)境服務(wù)器,讓您能夠輕松地開(kāi)始?PHP?開(kāi)發(fā)工作,感興趣的可以了解一下2023-11-11docker啟動(dòng)ES內(nèi)存溢出的解決方案
這篇文章主要介紹了docker啟動(dòng)ES內(nèi)存溢出的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03使用docker搭建go環(huán)境的簡(jiǎn)單步驟
最近公司里面的項(xiàng)目用到了Docker,正好準(zhǔn)備學(xué)習(xí)下Golang,所以就學(xué)習(xí)Golang順便也學(xué)習(xí)下Docker怎么用的,剛好從頭開(kāi)始配置下環(huán)境,這篇文章主要給大家介紹了關(guān)于使用docker搭建go環(huán)境的簡(jiǎn)單步驟,需要的朋友可以參考下2023-10-10