查找每個Docker鏡像的層和層大小的兩種方法
簡介
通過使用容器化,我們可以快速設置和配置我們的部署環(huán)境,這有助于我們節(jié)省時間和資源??紤]到 “一次編寫,隨地部署 “的目標,容器化可以幫助我們簡化現(xiàn)代應用程序的部署過程,而這可能是復雜的。
尋找Docker鏡像的層和層大小
在這篇文章中,我們將探討如何找到每個Docker鏡像的層和層大小。這對于識別可能導致鏡像整體大小的大型層,以及確定哪些層可以被刪除或優(yōu)化以減少鏡像的大小是非常有用的。
方法
使用Dockerfile
使用Docker Image Inspect命令
讓我們詳細了解其中的每一項,并通過實例看到它們的作用。
使用Dockerfile
示例
第1步 – 為你的項目創(chuàng)建一個新的目錄,并導航到該目錄 —
$ mkdir directoryname $ cd directoryname
第2步 – 在這個新目錄下制作一個名為 “Dockerfile “的文件,內容如下 —
FROM alpine:latest RUN apk add --no-cache curl
這包括建立你的圖像的說明以及基本圖像。
第3步 – 在終端運行docker build命令,使用Dockerfile構建鏡像—-。
docker build -t myimage .
第4步 – 要檢查圖層和圖層大小,在終端運行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步 – 在終端運行docker inspect命令來檢查鏡像并獲得其細節(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 “命令允許我們探索關于Docker鏡像的全面細節(jié),比如它的層數(shù)和大小。
下面的步驟可以用來獲得Docker鏡像的層和層大小——。
第1步 – 通過打開終端或命令提示符,進入包含你的Docker鏡像的目錄。
第2步 – 要查看所有可訪問的Docker鏡像,請在終端運行以下命令 —
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。在這個例子中,我們將利用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步 – 輸出將是一個JSON對象,包含關于圖像的詳細信息,包括它的圖層和圖層在終端的大小。
docker image inspect --format='{{json .RootFS.Layers}}' 499a9ddb3acd在終端的輸出中會產(chǎn)生一個圖像的層和它們的尺寸的列表。
輸出
["sha256:ded7a220bb058e28ee3254fbba04ca90b679070424424761a53a043b93b612bf","sha256:19bc0373c06b6727c115ef34961486b1a9f3b7c8ccbd3441c4b108aeef2b338d"]
結論
在這篇文章中,我們探討了尋找每個Docker鏡像的層和層大小的各種方法。通過使用Dockerfile方法,我們可以通過檢查用于構建鏡像的指令來查看層和大小。Docker歷史命令允許我們查看鏡像的歷史,并看到層和它們的大小。Docker圖像檢查命令也提供了關于圖像的層和大小的詳細信息。
到此這篇關于查找每個Docker鏡像的層和層大小的兩種方法的文章就介紹到這了,更多相關Docker鏡像層大小內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解CentOS7用阿里云Docker Yum源在線安裝Docker 17.03.2
這篇文章主要介紹了詳解CentOS7用阿里云Docker Yum源在線安裝Docker 17.03.2,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
docker鏡像倉庫hub.docker.com無法訪問的解決方法
最近許多群友都詢問為什么無法訪問Docker鏡像倉庫,本文就來介紹一下docker鏡像倉庫hub.docker.com無法訪問的解決方法,感興趣的可以了解一下2023-08-08
Docker快速部署國產(chǎn)達夢數(shù)據(jù)庫的實現(xiàn)示例
本文主要介紹了Docker快速部署國產(chǎn)達夢數(shù)據(jù)庫的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從)
本文主要介紹了docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07

