转载请注明出处:

1.使用docker history进行分析  

  docker history 命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间、创建者、大小和注释等信息。

查看镜像历史

docker history myimage:latest

  使用示例:

root@controller1:~# docker images | grep zj_jdk_test_3
zj_jdk_test_3 latest 623478971aeb 8 weeks ago 280MB
root@controller1:~#
root@controller1:~#
root@controller1:~#
root@controller1:~#
root@controller1:~# docker history 623478971aeb
IMAGE CREATED CREATED BY SIZE COMMENT
623478971aeb 8 weeks ago /bin/sh -c set -x && sed -i 's#deb.debia… 20.2MB
b427061b275f 2 years ago /bin/sh -c set -eux; arch="$(dpkg --print-… 108MB
<missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u342 0B
<missing> 2 years ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B
<missing> 2 years ago /bin/sh -c #(nop) ENV PATH=/usr/local/openj… 0B
<missing> 2 years ago /bin/sh -c { echo '#/bin/sh'; echo 'echo "$J… 27B
<missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/local/… 0B
<missing> 2 years ago /bin/sh -c set -eux; apt-get update; apt-g… 11.5MB
<missing> 2 years ago /bin/sh -c set -ex; if ! command -v gpg > /… 16.5MB
<missing> 2 years ago /bin/sh -c set -eux; apt-get update; apt-g… 15.9MB
<missing> 2 years ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:dfd7e3791fa0512f0… 108MB
root@controller1:~#

显示完整输出

docker history --no-trunc myimage:latest
  • 镜像历史信息包括每一层的创建指令和大小,有助于了解镜像的构建过程和内容。

2.使用dive进行分析

Dive 的主要功能:

  • 分层分析:查看 Docker 镜像的每一层,了解每层的文件及其占用的空间。
  • 空间利用率:计算镜像中有效空间的占比,给出效率评分。
  • 浪费空间检测:识别重复文件、未使用的依赖或冗余数据。
  • 手动优化建议:根据分析结果手动调整 Dockerfile 以优化镜像大小。

安装 dive

docker pull wagoodman/dive:latest
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest <your_image>

  启动之后:

root@controller1:~# docker images | grep dive
wagoodman/dive latest cf2f0c72f085 10 months ago 51.7MB
root@controller1:~#

  或者通过以下命令安装:

snap install dive

  通过以下命令来分析 Docker 镜像:

dive nginx:latest

  运行后效果如图:

  启动 dive 后,分为两部分:

    左侧(层结构):展示 Docker 镜像的每一层,显示每一层的命令(如 COPY、RUN)和镜像层的大小。可以通过上下箭头在不同层之间切换。

    右侧(文件系统内容):展示每一层中具体添加、修改或删除的文件和目录。你可以看到镜像每一层对文件系统的影响,以及文件变化和大小。

    Layer Details:介绍了这一层的命令

    Images Details:介绍镜像的名字、占用空间、镜像中未使用的文件和重复使用文件的大小、镜像使用效率(未使用的文件和重复使用文件的大小/镜像占用总空间)

已有docker镜像构建过程分析的更多相关文章

  1. Docker镜像构建(五)

    Docker 镜像介绍 Docker镜像构建分为两种,一种是手动构建,另一种是Dockerfile(自动构建) 手动构建docker镜像 案例:我们基于centos镜像进行构建,制作自己的nginx镜 ...

  2. 4、Docker 镜像构建

    Docker 镜像构建 构建分为两种 手动构建 自动构建dockerfile 手动构建 首先启动一个Centos 容器,然后在容器中安装一个nginx [root@node ~]# docker ru ...

  3. Docker镜像构建原理解析(不装docker也能构建镜像)

    在devops流程里面 构建镜像是一个非常重要的过程,一般构建镜像是写dockerfile文件然后通过docker client来构建的image. docker client 会先检查本地有没有im ...

  4. Docker镜像构建的两种方式

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行 ...

  5. Docker镜像构建

    一.简介 在构建容器化应用时,相当重要的步骤莫过于镜像制作,本文将介绍镜像制作方法以及镜像制作的建议.通常镜像的制作有两种方式: 使用现有的容器使用docker commit 生成镜像 使用Docke ...

  6. Docker镜像构建文件Dockerfile及相关命令介绍

    使用docker build命令或使用Docker Hub的自动构建功能构建Docker镜像时,都需要一个Dockerfile文件.Dockerfile文件是一个由一系列构建指令组成的文本文件,doc ...

  7. Docker 镜像构建之 Dockerfile

    在 Docker 中创建镜像最常用的方式,就是使用 Dockerfile.Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明.官方文档:https://d ...

  8. Spring Boot 2.6.0正式发布:默认禁止循环依赖、增强Docker镜像构建...

    昨天,Spring官方正式发布了Spring Boot今年最后一个特性版本:2.6.0 同时,也宣布了2.4.x版本的终结. 那么这个新版本又带来了哪些新特性呢?下面就一起跟着DD来看看吧! 重要特性 ...

  9. Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

    我们知道,docker能实现应用打包隔离,实现快速部署和迁移.如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构 ...

  10. Docker镜像构建的两种方式(六)--技术流ken

    镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...

随机推荐

  1. KubeSphere 使用 HTTPS 协议集成 Harbor 镜像仓库指南

    作者:申红磊,青云科技容器解决方案架构师,开源项目爱好者,KubeSphere Member. 上面两篇文章讲了如何部署 HTTPS Harbor 和对接 HTTP 的 Harbor 镜像仓库:接下来 ...

  2. Spring中的事务提交事件

    如果想在spring操作事务结束后执行一些代码,应该怎么办? 为什么要这样?比如我们在事务中给其他系统发了消息,期望事务提交后过一会收到这个系统的回应,然后操作刚刚提交的数据.但是如果回应来的太快就像 ...

  3. jmeter-模拟带参数的请求与上传文件

    请求参数照着前端请求的样式填即可: header带content: header不带content_type: 总结:上传文件时headers里面不能带content_type参数

  4. Java序列化之ProtoStuff

    知识点: ProtoStuff 是将结构数据转为字节流进行序列化的,优点是占用空间小,速度快,缺点是可读性差. ProtoStuff 是基于 ProtoBuf 发展而来的. 本文不讲那么多背景,直接上 ...

  5. Linux基础-学会使用命令帮助

    概述 使用 whatis 使用 man 查看命令程序路径 which 总结 参考资料 概述 Linux 命令及其参数繁多,大多数人都是无法记住全部功能和具体参数意思的.在 linux 终端,面对命令不 ...

  6. AI Undetect是什么?

    标题:AI UNDETECT:超越AI检测的反检测神器 在数字时代,人工智能的飞速发展已经渗透到我们生活的各个领域,包括教育.科技.网络内容制作等.越来越多的人依赖AI来生成各种内容,从学术作业.论文 ...

  7. 记录java接口自动化模板优化

    项目路径说明 内容优化 优化内容 1.自动生成的测试报告集成至项目中,可直接通过项目访问测试报告(之前生成测试报告位于项目外,需要手动打开) 优化效果: 2.后续会增加allure测试报告集成使用(实 ...

  8. 题解:P6672 [清华集训2016] 你的生命已如风中残烛

    题解:P6672 [清华集训2016] 你的生命已如风中残烛 标签 组合数学 分析 首先引入一个引理. Raney 引理 对于一个长度为 \(n\) 的序列 \(a\),如果 \(\sum\limit ...

  9. 1000%增长!我仅用一个小时搞定!AI智能体+AI小程序=MVP王炸组合!

    前言 在万圣节的前一晚上10月30日,一位运营朋友跟我说了个点子万圣节头像生成器,然后大概给我分析了下整体思路,于是我用扣子Coze平台(coze.cn)搭建了一个AI智能体整个过程花了一个小时就搞定 ...

  10. C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...