查找每个Docker镜像的层和层大小的两种方法

 更新时间:2023年10月09日 10:37:34   作者:极客  
本文主要介绍了查找每个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镜像层大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器开jupyter不能访问到的解决方法

    Docker容器开jupyter不能访问到的解决方法

    这篇文章主要介绍了Docker容器开jupyter不能访问到的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Docker容器启动时初始化Mysql数据库的方法

    Docker容器启动时初始化Mysql数据库的方法

    这篇文章给大家介绍Docker容器启动时初始化Mysql数据库的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2013-11-11
  • Docker部署mysql远程连接 解决2003的问题

    Docker部署mysql远程连接 解决2003的问题

    这篇文章主要介绍了Docker部署mysql远程连接 解决2003错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker如何实现修改Docker0网桥默认网段

    Docker如何实现修改Docker0网桥默认网段

    这篇文章主要介绍了Docker如何实现修改Docker0网桥默认网段,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • docker中nginx的默认路径位置和映射目录启动方式

    docker中nginx的默认路径位置和映射目录启动方式

    这篇文章主要介绍了docker中nginx的默认路径位置和映射目录启动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Docker Compose引用环境变量的方法示例

    Docker Compose引用环境变量的方法示例

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 解决Mac Docker x509证书的问题

    解决Mac Docker x509证书的问题

    这篇文章主要介绍了解决Mac Docker x509证书的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用docker搭建一套开发环境全家桶的详细教程

    使用docker搭建一套开发环境全家桶的详细教程

    这篇文章主要介绍了使用docker搭建一套开发环境全家桶,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • docker搭建lnmp环境的实现步骤

    docker搭建lnmp环境的实现步骤

    DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一键安装程序,本文就来介绍一下docker搭建lnmp环境的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • docker 安装 Influxdb-relay及配置教程

    docker 安装 Influxdb-relay及配置教程

    这篇文章主要介绍了docker 安装 Influxdb-relay及配置教程的相关资料,需要的朋友可以参考下
    2023-08-08

最新评论