3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IPFactoryAdvent Calendar 2023

Day 4

UbuntuイメージにDive tool を使ってみた

Last updated at Posted at 2023-12-03

IPFactory Advent Calender 2023 4日目の記事です。

はじめに

 どうも、色んな人のブログを読んでにちゃにちゃしているpizaです。
先日、Mediumというブログサイトで、Docker Image を分析するツール「dive」について取り上げたブログを見つけました。イメージの分析という点が面白そうだなと思い、実際使用してみると想像以上でした!!!
 ということで、今回はDocker Image分析ツール「dive」の概要と基本操作についてまとめました。気になる方は是非お手元でお試しください。

↓影響を受けたブログ

diveについて

 dive とは、Docker Image、レイヤーの内容を調査し、Docker/OCI イメージのサイズを縮小するためのツールである。

実施環境の準備

ディレクトリ

├── Dockerfile
└── hello.txt

Docker file

  • パッケージのインストール
  • ファイルの記述
  • ファイルの上書き
Dockerfile
FROM ubuntu:20.04

RUN  apt update          && \
     apt install -y vim

RUN  echo 'hello world' > ~/hello.txt

COPY ./hello.txt /root

上書き用ファイル

hello.txt
You did a good job of overwriting it.

ツールのインストール

公式のGitHubから、自分の環境に合わせてインストールする。
https://github.com/wagoodman/dive#installation

イメージを用意する

分析したいイメージを手元に用意する。特にない場合は、先のDocker fileと以下のコマンドでimageを作成。

$ docker image build -t ubuntu_dv .

dive実行

イメージ タグ/ID/ダイジェストを指定し、dive を実行。

$ dive <image name>

## 例:
$ dive ubuntu_dv

画面構成

image.png

  • Layers:どのレイヤーを調査するかを選択
  • Layer Details: そのレイヤーでなにを実行しているかを表示
  • Current Layer Contents: Layersで指定したレイヤーに含まれているファイルツリーをサイズと共に表示
  • Image Details: イメージ全体の情報を表示
    TabLayersCurrent Layer Contentsの切り替え、Ctrl+Fでファイル名検索などが可能。

操作と補足

1. Spaceでフォルダを閉じる

image.png
Current Layer Contentsを選択時、開かれているディレクトリをSpaceで閉じることが可能。また、Ctrl+Spaceは一括ですべてのファイルを閉じることができる。しかし、一部のMacPCではこの機能を活用することが出来ないと言われている。

2. vim インストールについて

image.png
vimをインストールする際に、apt upgateを行っている。これにより、様々なファイルが追加、上書きされていっている。追加されたファイルは緑色、その他の変化(上書きや削除)があったファイルはオレンジ色になる。

3.フィルターの掛け方

image.png
2つ目のレイヤーではhello.txtを作成する命令がある。しかし、ファイル保存先を絶対パスではなく、相対パスで指定しているため、直感で見つけることは少し面倒になる。その時使えるのが、Ctrl+Fのフィルター機能だ。

image.png
上の画像のようにフィルター機能を利用すると瞬時にファイルの位置を特定することが出来る。

外部からの上書きについて(おまけ)

image.png
apt updateではファイルの上書きがオレンジで表示されているのに対し、COPYを活用したファイルの上書きは文字が緑で表示されている。これにより、外部からのファイルの上書きはファイル更新ではなく、ファイルの追加として認識されるのだと推測される。

さいごに

 いかがでしたでしょうか。実際手元で動かしてみると、想像以上に使いやすいツールだと思いませんか??自分のImageだけでなく、Docker Hub上にある誰かのImageも見ることが出来るので、Dockerの勉強にも使えると思っています。というか、私はその使い方をしています、、、

それでは、これからも楽しい Docker Life を過ごしましょう!
最後までお読みいただき誠にありがとうございました。

参考資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?