查找每个Docker镜像的层和层大小的两种方法
作者:极客
简介
通过使用容器化,我们可以快速设置和配置我们的部署环境,这有助于我们节省时间和资源。考虑到 “一次编写,随地部署 “的目标,容器化可以帮助我们简化现代应用程序的部署过程,而这可能是复杂的。
寻找Docker镜像的层和层大小
在这篇文章中,我们将探讨如何找到每个Docker镜像的层和层大小。这对于识别可能导致镜像整体大小的大型层,以及确定哪些层可以被删除或优化以减少镜像的大小是非常有用的。
方法
使用Dockerfile
使用Docker Image Inspect命令
让我们详细了解其中的每一项,并通过实例看到它们的作用。
使用Dockerfile
示例
第1步 – 为你的项目创建一个新的目录,并导航到该目录 —
$ 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命令,列出系统中所有可用的图像–
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命令来检查镜像并获得其细节,包括层和它们的大小。
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镜像的全面细节,比如它的层数和大小。
下面的步骤可以用来获得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
在终端的输出中会产生一个图像的层和它们的尺寸的列表。
输出
["sha256:ded7a220bb058e28ee3254fbba04ca90b679070424424761a53a043b93b612bf","sha256:19bc0373c06b6727c115ef34961486b1a9f3b7c8ccbd3441c4b108aeef2b338d"]
结论
在这篇文章中,我们探讨了寻找每个Docker镜像的层和层大小的各种方法。通过使用Dockerfile方法,我们可以通过检查用于构建镜像的指令来查看层和大小。Docker历史命令允许我们查看镜像的历史,并看到层和它们的大小。Docker图像检查命令也提供了关于图像的层和大小的详细信息。
到此这篇关于查找每个Docker镜像的层和层大小的两种方法的文章就介绍到这了,更多相关Docker镜像层大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!