網(wǎng)站后臺(tái)是怎么做的seo網(wǎng)站推廣平臺(tái)
dive是一個(gè)用于研究 Docker 鏡像、層內(nèi)容以及發(fā)現(xiàn)縮小 Docker/OCI 鏡像大小方法的開(kāi)源工具.
開(kāi)源地址: dive github
為了有個(gè)直觀的印象, 可以先看一下repo文檔中的gif圖:
安裝
在Ubuntu/Debian系統(tǒng)下,可以使用deb包安裝:
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb
可能會(huì)遇到下載的問(wèn)題,可以在repo的release中,找到適合當(dāng)前os及arch的安裝包,然后執(zhí)行 sudo apt install
.
其他系統(tǒng)的安裝請(qǐng)參照倉(cāng)庫(kù)文檔.
docker image方式
dive提供了docker鏡像, 如果不想安裝在本地,可以用docker的方式運(yùn)行.
首先下載鏡像:
docker pull wagoodman/dive
或者自行build,從官方repo clone代碼到本地后,執(zhí)行build命令:
docker build -t "your-image-tag" .
然后執(zhí)行:
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive <your-docker-image-tag>
注意這里的-v /var/run/docker.sock:/var/run/docker.sock
是必須的.
或者為了方便,也可以創(chuàng)建一個(gè)alias:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
運(yùn)行鏡像分析
我們用如下命令來(lái)分析一個(gè)鏡像:
dive nginx:latest
可以得到如上圖所示的輸出.通過(guò)上下健移動(dòng),可以看到不同layer的信息,包括執(zhí)行的command, 當(dāng)前l(fā)ayer的文件系統(tǒng)信息, 文件的變化等…
官方文檔中給出的功能列表包括:
顯示 Docker 鏡像分層內(nèi)容
當(dāng)您在左側(cè)選擇一個(gè)層時(shí),您將在右側(cè)看到該層及其之前所有層的內(nèi)容。您還可以使用箭頭鍵完全瀏覽文件樹(shù)。
指示每個(gè)層中的變更
文件樹(shù)中會(huì)標(biāo)出哪些文件發(fā)生了變更、修改、添加或刪除。這可以調(diào)整為顯示特定層的變更,或累積到該層的變更。
估算"鏡像效率"
左下窗格顯示基本層信息和一個(gè)實(shí)驗(yàn)性指標(biāo),用于猜測(cè)您的鏡像中包含多少浪費(fèi)的空間。這可能是由于在層之間重復(fù)文件、移動(dòng)文件或未完全刪除文件造成的。它提供了百分比"得分"和總的浪費(fèi)文件空間。
小結(jié)
dive是一個(gè)非常有用的小工具,可以幫助我們很直觀的分析鏡像,尤其是可以看到鏡像中文件系統(tǒng)的變化; 另外鏡像效率這個(gè)功能也很有用, 可以用于image的大小優(yōu)化. 在打包一些LLM模型鏡像時(shí),由于大量的python三方包和推理加速中間件的安裝,很容易造成鏡像變得巨大無(wú)比,對(duì)鏡像尺寸壓縮優(yōu)化就變得重要起來(lái). 后續(xù)會(huì)繼續(xù)分享如何優(yōu)化docker image的大小,歡迎交流.