查找每个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安装influxdb的详细教程(性能测试)

    docker安装influxdb的详细教程(性能测试)

    这篇文章主要介绍了docker安装influxdb的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Docker容器简单部署nginx过程解析

    Docker容器简单部署nginx过程解析

    这篇文章主要介绍了Docker容器简单部署nginx过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 使用Docker+Jenkins自动构建部署

    使用Docker+Jenkins自动构建部署

    这篇文章主要介绍了使用Docker+Jenkins自动构建部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 开源框架 Matrix-Dendrite 搭建聊天服务器的详细过程

    开源框架 Matrix-Dendrite 搭建聊天服务器的详细过程

    Matrix 是一个开源、可交互、去中心化的实时通信服务框架。使用 Matrix 可以搭建安全的通信服务器,配合支持 Matrix 的客户端可以实现个人、团队间的实时聊天交互,对Matrix Dendrite搭建聊天服务器的过程感兴趣的朋友一起看看吧
    2022-03-03
  • Docker 安装 Jenkins 并解决初始安装插件失败问题

    Docker 安装 Jenkins 并解决初始安装插件失败问题

    这篇文章主要介绍了Docker 安装 Jenkins 并解决初始安装插件失败问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • docker在win10家庭版下构建laravel开发环境的教程详解

    docker在win10家庭版下构建laravel开发环境的教程详解

    这篇文章主要介绍了docker在win10家庭版下构建laravel开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 使用Docker创建FTP服务器的过程解析

    使用Docker创建FTP服务器的过程解析

    这篇文章主要介绍了使用Docker创建FTP服务器的过程解析,使用 Docker 搭建 FTP 服务,不仅十分简单,而且可以对宿主机有一定的隔离,对Docker创建FTP服务器的过程感兴趣的朋友一起看看吧
    2022-04-04
  • docker容器通信参数使用及link参数介绍

    docker容器通信参数使用及link参数介绍

    这篇文章主要介绍了docker容器通信参数使用及link参数介绍,link的原理就是在/etc/hosts里面添加了一个alias的名称,本文通过案例分析给大家详细讲解,需要的朋友可以参考下
    2022-09-09
  • Docker 容器内存监控原理及应用

    Docker 容器内存监控原理及应用

    这篇文章主要介绍了Docker 容器内存监控原理及应用的相关资料,需要的朋友可以参考下
    2016-10-10
  • docker-compose容器互相连接的实现

    docker-compose容器互相连接的实现

    本文主要介绍了docker-compose容器互相连接的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论