docker镜像分析利器之dive

简介: docker镜像分析利器之dive

01 引言

在日常的开发中,我们很多时候会使用docker的命令去查看镜像的元数据信息以及构建镜像的过程,一般我们会使用inspecthistory的两个命令:

docker inspect docker history

从上图可以看得出这些信息对我们去分析一个镜像的每一层(Layer)的组成来说还是不太够,不够清晰明了,这个时候,我们可以使用dive,效果如下:

02 Dive 相关概念

Github地址:https://github.com/wagoodman/dive

根据官网描述,Dive是一款用于查看docker 镜像层内容以及分析优化 docker/oci 镜像大小的工具,从star来看,也是一款比较热门的开源框架了。


Dive的功能亮点有如下

  • 按层(Layer)显示Docker镜像:在左侧选择一个图层时,将显示该图层的内容以及右侧的所有先前图层。此外,还可以使用箭头键全面浏览文件树;
  • 指出每一层的变化:文件树中指示已更改,修改,添加或删除的文件,可以对其进行调整以显示特定层的更改,或显示直到该层的汇总更改;
  • 估算“镜像效率”:左下方的窗格显示基本图层信息和实验指标,该指标将猜测图像所包含的浪费空间(这可能是由于跨层复制文件,跨层移动文件或没有完全删除文件。提供百分比“得分”和总浪费文件空间);
  • 快速构建/分析周期:可以构建一个Docker镜像并使用以下命令立即进行分析:dive build -t some-tag (只需要用docker build 相同的 dive build 命令替换命令即可)。

03 Dive 安装

Ubuntu/Debian

wget https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.deb
sudo apt install ./dive_0.9.2_linux_amd64.deb

RHEL/Centos

curl -OL https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm
rpm -i dive_0.9.2_linux_amd64.rpm

Arch Linux

yay -S dive

Mac

brew install dive

Windows

04 Dive 使用

安装完成之后,使用dive --help可以查看其用法,翻译后的含义如下:

用法:
  dive [IMAGE] [flags]
  dive [command]
Flags:
      --ci                                跳过交互式TUI并根据CI规则进行验证 (等同于 CI=true)
      --ci-config string                  如果环境设置 CI=true , 使用给定的yaml来驱动验证规则. (default ".dive-ci")
      --config string                     配置文件(默认是 $HOME/.dive.yaml, ~/.config/dive/*.yaml, or $XDG_CONFIG_HOME/dive.yaml)
  -h, --help                              帮助
      --highestUserWastedPercent string   (只有在指定--ci才有效) 最大允许的字节浪费百分比 (as a ratio between 0-1), 否则ci校验失败. (默认 "0.1")
      --highestWastedBytes string         (只有在指定--ci才有效) 最大允许的字节浪费, 否则ci校验失败. (默认 "disabled")
  -i, --ignore-errors                     镜像分析失败继续运行
  -j, --json string                       跳过交互式TUI,将层分析统计数据写入给定文件.
      --lowestEfficiency string           (只有在指定--ci才有效) 最低允许镜像的效率 (as a ratio between 0-1), 否则ci校验失败. (默认 "0.9")
      --source string                     容器引擎拉取镜像的地方,允许的值: docker, podman, docker-archive (默认 "docker")
  -v, --version                           显示版本号

下面举些例子。

4.1 显示镜像详情

分析镜像命令:

dive <image tag/id/digest>

举例:

dive mysql:8.0.30

4.2 分析镜像

可以直接显示分析结果,而不显示详情。

分析命令:

CI=true dive  <image tag/id/digest>

举例:

CI=true dive mysql:8.0.30

05 其它

除了使用docker命令以及dive,类似的工具还可以使用Dedockify

06 文末

本文主要讲解了hive的一些基本概念及用法,希望能帮助到大家,谢谢大家的阅读,本文完!

目录
相关文章
|
10天前
|
JavaScript 前端开发 数据安全/隐私保护
阿里云云效操作报错合集之流水线中获取不到CI_COMMIT_REF_NAME变量,导致docker镜像打包失败,什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
13天前
|
应用服务中间件 Linux nginx
详细解读docker国内镜像源docker镜像大全
详细解读docker国内镜像源docker镜像大全
388 0
|
3天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
4天前
|
缓存 Ubuntu Docker
怎么减小Docker的镜像体积?
**Docker 镜像优化目标:**提升构建速度、减小镜像大小、增强安全性和效率。**技巧:**1) 选择轻量级基础镜像(如Alpine、Ubuntu Minimal);2) 使用多阶段构建,分阶段复制文件和执行操作;3) 利用缓存加速构建,避免不必要的重复;4) 合并`RUN`指令减少镜像层数。这些方法能显著优化镜像,提高性能和节省存储空间。
|
10天前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11天前
|
IDE Serverless 开发工具
函数计算产品使用问题之如何使用Docker镜像作为执行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11天前
|
存储 Serverless 对象存储
函数计算产品使用问题之项目打包为docker镜像,该如何部署上去
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
22天前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
105 4
|
19天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
6天前
|
安全 关系型数据库 开发者
Docker Compose凭借其简单易用的特性,已经成为开发者在构建和管理多容器应用时不可或缺的工具。
Docker Compose是容器编排利器,简化多容器应用管理。通过YAML文件定义服务、网络和卷,一键启动应用环境。核心概念包括服务(组件集合)、网络(灵活通信)、卷(数据持久化)。实战中,编写docker-compose.yml,如设置Nginx和Postgres服务,用`docker-compose up -d`启动。高级特性涉及依赖、环境变量、健康检查和数据持久化。最佳实践涵盖环境隔离、CI/CD、资源管理和安全措施。案例分析展示如何构建微服务应用栈,实现一键部署。Docker Compose助力开发者高效驾驭复杂容器场景。
17 1