四时宝库

程序员的知识宝库

镜像太大?试试GitHub-Dive,分析Docker镜像内容还能减小大小

Dive 是一个分析和浏览 Docker 镜像每层内容的工具 , 并可以发现一些减少你的 Docker 镜像大小的方法。


使用以下带镜像 tag/id/digest 的命令即可分析一个 docker 镜像:

dive <your-image-tag>

你也可以构建镜像时直接分析它:

dive build -t <some-tag>

目前这是测试版。如果您需要一个新功能或发现一个错误,请随时提交问题 。

基本功能

  • 显示按层细分的Docker镜像内容

如果您选择了左边的一层 , 右边会展示该层内容以及所有的上级层次 。

  • 指出每层中发生了哪些变化

文件树中指出了被更改、修改、添加、删除的文件 。 可以调整此值来显示特定层次的修改 , 或这一层的聚合修改 。

  • 预估 " 镜像效率 "

左下方窗格显示了基本层次信息,和一个猜测您的镜像空间中包含有多少被浪费空间的实验指标 。 这可能是跨层复制文件 、 跨层移动文件 、或不完全删除文件 。 提供了百分比"得分" ( score ) 和 被浪费的总文件空间 。

  • 快速构建 / 分析周期

您可以使用命令 dive build -t some-tag 构建一个 Docker 镜像并立即分析。

您只需要将您的 docker 构建命令替换成相同的 dive 构建命令。

安装

Ubuntu/Debian

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

RHEL/Centos

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

Arch Linux

可在 Arch用户软件仓库(Arch User Repository,AUR) 中获得 。

yay -S dive

以上示例假定 yay 是安装AUR包的工具。 注意: AUR 仓库不受 Dive 项目维护者的控制。

Mac

brew tap wagoodman/dive
brew install dive

或者从 Release 页面下载最新的 Darwin 版本 。

Windows

从最新 Release 下载 。

Go tools

go get github.com/wagoodman/dive

注意 : 用这种方式安装 , 当运行 dive -v 时您将看不到合适的版本。

Docker

docker pull wagoodman/dive

docker pull quay.io/wagoodman/dive

运行时需要包含 Docker 客户端二进制文件和 socket 文件 :

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

Docker for Windows ( 显示PowerShell兼容的换行符 ; 折叠为一行以实现命令提示符兼容性 )

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

注意:根据您在本地运行的 docker 版本,您可能需要将 docker API 版本指定为环境变量 :

DOCKER_API_VERSION=1.37 dive ...

或者如果您用一个 docker 镜像运行:

docker run --rm -it \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -e DOCKER_API_VERSION=1.37
 wagoodman/dive:latest <dive arguments...>

快捷键


配置

配置非强制 , 但是 , 您可以创建配置文件并对其中的值进行覆盖:

log:
 enabled: true
 path: ./dive.log
 level: info
# Note: you can specify multiple bindings by separating values with a comma.
# Note: UI hinting is derived from the first binding
keybinding:
 # Global bindings
 quit: ctrl+c
 toggle-view: tab, ctrl+space
 filter-files: ctrl+f, ctrl+slash
 # Layer view specific bindings
 compare-all: ctrl+a
 compare-layer: ctrl+l
 # File view specific bindings
 toggle-collapse-dir: space
 toggle-added-files: ctrl+a
 toggle-removed-files: ctrl+r
 toggle-modified-files: ctrl+m
 toggle-unmodified-files: ctrl+u
 page-up: pgup
 page-down: pgdn
diff:
 # You can change the default files show in the filetree (right pane). All diff types are shown by default.
 hide:
 - added
 - removed
 - changed
 - unchanged
filetree:
 # The default directory-collapse state
 collapse-dir: false
 # The percentage of screen width the filetree should take on the screen (must be >0 and <1)
 pane-width: 0.5
layer:
 # Enable showing all changes from this layer and ever previous layer
 show-aggregated-changes: false

Dive 会在以下位置搜索配置 :

  • ~/.dive.yaml
  • $XDG_CONFIG_HOME/dive.yaml
  • ~/.config/dive.yaml

GitHub 链接:

https://github.com/wagoodman/dive

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接