查找每個(gè)Docker鏡像的層和層大小的兩種方法
簡(jiǎn)介
通過(guò)使用容器化,我們可以快速設(shè)置和配置我們的部署環(huán)境,這有助于我們節(jié)省時(shí)間和資源??紤]到 “一次編寫,隨地部署 “的目標(biāo),容器化可以幫助我們簡(jiǎn)化現(xiàn)代應(yīng)用程序的部署過(guò)程,而這可能是復(fù)雜的。
尋找Docker鏡像的層和層大小
在這篇文章中,我們將探討如何找到每個(gè)Docker鏡像的層和層大小。這對(duì)于識(shí)別可能導(dǎo)致鏡像整體大小的大型層,以及確定哪些層可以被刪除或優(yōu)化以減少鏡像的大小是非常有用的。
方法
使用Dockerfile
使用Docker Image Inspect命令
讓我們?cè)敿?xì)了解其中的每一項(xiàng),并通過(guò)實(shí)例看到它們的作用。
使用Dockerfile
示例
第1步 – 為你的項(xiàng)目創(chuàng)建一個(gè)新的目錄,并導(dǎo)航到該目錄 —
$ mkdir directoryname $ cd directoryname
第2步 – 在這個(gè)新目錄下制作一個(gè)名為 “Dockerfile “的文件,內(nèi)容如下 —
FROM alpine:latest RUN apk add --no-cache curl
這包括建立你的圖像的說(shuō)明以及基本圖像。
第3步 – 在終端運(yùn)行docker build命令,使用Dockerfile構(gòu)建鏡像—-。
docker build -t myimage .
第4步 – 要檢查圖層和圖層大小,在終端運(yùn)行docker images命令,列出系統(tǒng)中所有可用的圖像–
docker images
輸出
REPOSITORY TAG IMAGE ID CREATED SIZE
myimage latest 499a9ddb3acd 2 minutes ago 9.29MB
docker-apps latest eb6dda32a60d 3 hours ago 176MB
docker101tutorial latest 1ebfcd22ec64 3 hours ago 47MB
ubuntu latest 6b7dfa7e8fdb 4 weeks ago 77.8MB
alpine/git latest 22d84a66cda4 7 weeks ago 43.6MB
第5步 – 在終端運(yùn)行docker inspect命令來(lái)檢查鏡像并獲得其細(xì)節(jié),包括層和它們的大小。
docker inspect IMAGE_ID
輸出
docker inspect 499a9ddb3acd
[
{
"Id": "sha256:499a9ddb3acdf2117fdb4df826e0782d05d01aa8d1c0574c96e7bed6fbbcf698",
"RepoTags": [
"myimage:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2023-01-08T07:49:58.294267525Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh"
],
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 9292948,
"VirtualSize": 9292948,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/e4c1f1bb76c66c5d1781a775c8a2ca9338065ea0b398aeaed4230a00a15d2952/diff",
"MergedDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/merged",
"UpperDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/diff",
"WorkDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ded7a220bb058e28ee3254fbba04ca90b679070424424761a53a043b93b612bf",
"sha256:19bc0373c06b6727c115ef34961486b1a9f3b7c8ccbd3441c4b108aeef2b338d"
]
},
"Metadata": {
"LastTagTime": "2023-01-08T07:49:58.412703277Z"
}
}
]使用Docker Image Inspect命令
“docker image inspect “命令允許我們探索關(guān)于Docker鏡像的全面細(xì)節(jié),比如它的層數(shù)和大小。
下面的步驟可以用來(lái)獲得Docker鏡像的層和層大小——。
第1步 – 通過(guò)打開(kāi)終端或命令提示符,進(jìn)入包含你的Docker鏡像的目錄。
第2步 – 要查看所有可訪問(wèn)的Docker鏡像,請(qǐng)?jiān)诮K端運(yùn)行以下命令 —
docker image ls
輸出
REPOSITORY TAG IMAGE ID CREATED SIZE
myimage latest 499a9ddb3acd 17 minutes ago 9.29MB
docker-apps latest eb6dda32a60d 3 hours ago 176MB
docker101tutorial latest 1ebfcd22ec64 3 hours ago 47MB
ubuntu latest 6b7dfa7e8fdb 4 weeks ago 77.8MB
alpine/git latest 22d84a66cda4 7 weeks ago 43.6MB
第3步 – 選擇你想檢查的圖像,并記下你之前輸出的ID。在這個(gè)例子中,我們將利用ID為 “499a9ddb3acd “的圖像。
第4步
docker image inspect 499a9ddb3acd
輸出
docker image inspect 499a9ddb3acd
[
{
"Id": "sha256:499a9ddb3acdf2117fdb4df826e0782d05d01aa8d1c0574c96e7bed6fbbcf698",
"RepoTags": [
"myimage:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2023-01-08T07:49:58.294267525Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh"
],
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 9292948,
"VirtualSize": 9292948,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/e4c1f1bb76c66c5d1781a775c8a2ca9338065ea0b398aeaed4230a00a15d2952/diff",
"MergedDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/merged",
"UpperDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/diff",
"WorkDir": "/var/lib/docker/overlay2/osfaf1c97lm7awgfbaqibrt6p/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ded7a220bb058e28ee3254fbba04ca90b679070424424761a53a043b93b612bf",
"sha256:19bc0373c06b6727c115ef34961486b1a9f3b7c8ccbd3441c4b108aeef2b338d"
]
},
"Metadata": {
"LastTagTime": "2023-01-08T07:49:58.412703277Z"
}
}
]第5步 – 輸出將是一個(gè)JSON對(duì)象,包含關(guān)于圖像的詳細(xì)信息,包括它的圖層和圖層在終端的大小。
docker image inspect --format='{{json .RootFS.Layers}}' 499a9ddb3acd在終端的輸出中會(huì)產(chǎn)生一個(gè)圖像的層和它們的尺寸的列表。
輸出
["sha256:ded7a220bb058e28ee3254fbba04ca90b679070424424761a53a043b93b612bf","sha256:19bc0373c06b6727c115ef34961486b1a9f3b7c8ccbd3441c4b108aeef2b338d"]
結(jié)論
在這篇文章中,我們探討了尋找每個(gè)Docker鏡像的層和層大小的各種方法。通過(guò)使用Dockerfile方法,我們可以通過(guò)檢查用于構(gòu)建鏡像的指令來(lái)查看層和大小。Docker歷史命令允許我們查看鏡像的歷史,并看到層和它們的大小。Docker圖像檢查命令也提供了關(guān)于圖像的層和大小的詳細(xì)信息。
到此這篇關(guān)于查找每個(gè)Docker鏡像的層和層大小的兩種方法的文章就介紹到這了,更多相關(guān)Docker鏡像層大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose安裝redis過(guò)程-主從+哨兵(3臺(tái)虛擬機(jī)一主兩從)
文章介紹了使用Docker部署Redis主從架構(gòu)及哨兵監(jiān)控的全過(guò)程,包括部署架構(gòu)、配置文件準(zhǔn)備、Docker-Compose文件編寫、部署步驟以及測(cè)試主從復(fù)制和故障轉(zhuǎn)移功能2026-04-04
教你使用docker安裝elasticsearch和head插件的方法
這篇文章主要介紹了docker安裝elasticsearch和head插件,安裝時(shí)需要下載鏡像和修改系統(tǒng)參數(shù),本文分流程給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
docker下elasticsearch安裝證書全過(guò)程
本文介紹了如何在Docker容器中安裝和配置Elasticsearch 7.6集群,并設(shè)置密碼,包括生成證書、拷貝證書、修改配置文件和創(chuàng)建密碼等步驟2025-11-11
Linux下docker 容器退出bash的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Linux下docker 容器退出bash的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Ubuntu安裝Docker超詳細(xì)小白教程(附國(guó)內(nèi)鏡像加速教程)
由于業(yè)務(wù)需要,又親自上手在服務(wù)器上安裝了Docker,所以這里再給大家總結(jié)下,這篇文章主要介紹了Ubuntu安裝Docker的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-04-04
LINUX中Docker?Swarm的介紹和詳細(xì)使用教程
Docker?Swarm是Docker的集群管理工具,將多個(gè)節(jié)點(diǎn)統(tǒng)一管理,支持服務(wù)部署、擴(kuò)縮容與滾動(dòng)更新,適用于高可用分布式應(yīng)用,本文給大家介紹LINUX中Docker?Swarm的介紹和詳細(xì)使用教程,感興趣的朋友一起看看吧2025-09-09
Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn)
Docker的端口映射和容器互聯(lián)是構(gòu)建和管理微服務(wù)架構(gòu)時(shí)重要的概念,本文主要介紹了Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
Docker使用root用戶進(jìn)入容器的幾種方法小結(jié)
很多時(shí)候,拉取運(yùn)行的容器,進(jìn)入時(shí),是非root賬戶,也不知道當(dāng)前賬戶的用戶密碼,甚至無(wú)賬戶,但在使用docker時(shí),有時(shí)候需要以root用戶權(quán)限進(jìn)入容器進(jìn)行操作,所以本文介紹了Docker使用root用戶進(jìn)入容器的幾種方法,需要的朋友可以參考下2025-09-09

