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的一些基本概念及用法,希望能帮助到大家,谢谢大家的阅读,本文完!

目录
相关文章
|
13天前
|
Ubuntu NoSQL 开发工具
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
141 70
|
7天前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
54 27
|
12天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
84 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
8天前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
55 22
|
15天前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
88 29
|
1月前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
53 3
docker push推送自己搭建的镜像
|
1月前
|
Docker 容器
|
10天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
158 93
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
262 77
|
23天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
110 35

热门文章

最新文章