首页 > 其他分享 >已有docker镜像构建过程分析

已有docker镜像构建过程分析

时间:2024-12-28 21:41:35浏览次数:1  
标签:ago bin years sh 构建 镜像 docker

转载请注明出处:

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:介绍镜像的名字、占用空间、镜像中未使用的文件和重复使用文件的大小、镜像使用效率(未使用的文件和重复使用文件的大小/镜像占用总空间)

标签:ago,bin,years,sh,构建,镜像,docker
From: https://www.cnblogs.com/zjdxr-up/p/18638008

相关文章

  • Dockerfile 常用命令
    常用命令FROM:指定基础镜像。每个Dockerfile必须以FROM指令开始。FROMubuntu:20.04RUN:执行命令并创建镜像层。常用于安装软件包。RUNapt-getupdate&&apt-getinstall-ypython3COPY:将文件或目录从宿主机复制到镜像内。COPY./localfile/path/in/con......
  • 赋能现代菜田科学种植精准治理,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建农田种
    传统的农业种植场景下,甜菜等作物的管理模式通常依赖于大水漫灌和农药喷洒,这种作业方式不仅造成了水资源的严重浪费,还使得病虫害和杂草的治理完全依赖于菜农的经验。随着人工智能(AI)技术的快速发展,越来越多的传统行业开始探索将AI技术引入实际生产过程中,以提高效率、降低成本并实......
  • [4428] 14 增量构建:Webpack 中的增量构建
    开始课程前,我先来解答上一节课的思考题:课程中介绍的几种支持缓存的插件(TerserWebpackPlugin,CSSMinimizerWebpackPlugin)和Loader(babel-loader,cache-loader)在缓存方面有哪些相同的配置项呢?通过对比不难发现,这些工具通常至少包含两个配置项:第一项用于指定是否开启缓存,以及指定缓存......
  • [4430] 16 无包构建:盘点那些 No-bundle 的构建方案
    上节课我们讨论了Webpack的最新版本Webpack5所带来的提效新功能。思考题是Webpack5中的持久化缓存究竟会影响哪些构建环节呢?通过对compiler.cache.hook.get的追踪不难发现:持久化缓存一共影响下面这些环节与内置的插件:编译模块:ResolverCachePlugin、Compilation/modu......
  • [4434] 20 流程优化:部署流程中的构建流程策略优化
    上节课我们分析了部署流程中,安装依赖阶段执行效率的影响因素和执行过程细节。思考题是如果使用npm的话,在最佳条件下是否也可以达到像Yarn一样瞬间完成依赖安装呢?答案是当然可以。在今天课程的第一部分我们就将了解如何利用安装目录缓存达到这一效果。我们将从部署流程效率优......
  • [4435] 21 容器方案:从构建到部署,容器化方案的优势有哪些?
    上节课我们主要介绍了部署系统中各耗时环节的一些常用优化方案。课后思考题是:课程中提到了几种利用缓存的优化方案呢?如果你认真学习了课程内容,不难发现我一共提到了三种基于缓存的优化方案,它们分别是:多项目共用依赖缓存、依赖安装目录的缓存以及构建过程的持久化缓存备份。这些缓......
  • Docker的常用命令
    1.基本命令命令描述示例dockerrun创建并启动一个容器dockerrun-itubuntubashdockerps列出当前运行的容器dockerpsdockerps-a列出所有容器,包括未运行的容器dockerps-adockerstop停止一个运行中的容器dockerstop[CONTAINER_ID]dockerst......
  • Dockerfile基本原理
    ###Dockerfile基本原理Dockerfile是一个文本文件,其中包含了所有必要的命令来构建一个有效的Docker镜像。这个文件是用来自动化构建过程的脚本,它告诉Docker如何从基础镜像开始,安装所需的软件包,设置环境变量,以及配置启动的应用程序等。###操作步骤1.**准备基础镜像**:......
  • 工控触摸屏用winForms来构建框架,效果还是很不错的
    工控触摸屏采用winForms构建框架具有诸多优势。winForms提供了丰富的控件和强大的开发工具,使得界面设计更加高效。它具有良好的稳定性和兼容性,能够适应工控环境的复杂要求。通过winForms可以实现直观的操作界面,方便操作人员进行监控和控制。同时,还可以结合数据采集和处理......
  • Java中三大构建工具的发展历程(Ant、Maven和Gradle)
    ......