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