ご存知かもしれませんが、Dockerコンテナイメージは、アプリケーションの実行に必要なすべてを備えた、軽量でスタンドアロンの実行可能なソフトウェアパッケージです。そのため、開発者はアプリケーションの構築と配布にコンテナイメージを使用することがよくあります。 Dockerイメージの内容を知りたい場合は、この簡単なガイドが役立つ場合があります。今日は、 "Dive" という名前のツールを使用して、Dockerイメージのコンテンツをレイヤーごとに分析および調査する方法を学習します。 。 Dockerイメージを分析することで、レイヤー間で重複する可能性のあるファイルを検出し、それらを削除してDockerイメージのサイズを縮小できます。 Diveユーティリティは、Docker Imageアナライザーであるだけでなく、DockerImageアナライザーの構築にも役立ちます。 Diveは、 Goで記述された無料のオープンソースツールです。 プログラミング言語。
ダイブのインストール
リリースページから最新バージョンを入手してください 使用するディストリビューションに応じて、以下のようにインストールします。
Debianを使用している場合 またはUbuntu 、次のコマンドを実行してダウンロードしてインストールします。
$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.deb
$ sudo apt install ./dive_0.0.8_linux_amd64.deb
RHEL / CentOSの場合:
$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
$ sudo rpm -i dive_0.0.8_linux_amd64.rpm
AURで利用できます 、たとえば、 YayなどのAURヘルパーツールを使用してインストールできます。 、ArchLinuxとそのバリアント。
$ yay -S dive
Diveは、 Linuxbrewを使用してインストールすることもできます パッケージマネージャー。
$ brew tap wagoodman/dive
$ brew install dive
その他のインストール方法については、このガイドの最後にあるプロジェクトのGitHubページを参照してください。
Dockerイメージのコンテンツを分析および調査する
Dockerイメージを分析するには、Docker「イメージID」を指定してdiveコマンドを実行するだけです。 「sudodockerimages」コマンドを使用してDockerイメージのIDを取得できます。
$ sudo dive ea4c82dcd15a
ここでは、 ea4c82dcd15a DockerイメージIDです。
Diveコマンドは、指定されたDockerイメージをすばやく分析し、その内容をターミナルに表示します。

Dockerイメージのコンテンツを調べる
上のスクリーンショットでわかるように、特定のDockerイメージのレイヤーとその詳細、無駄なスペースが左側のペインに表示されます。右側のペインで、特定のDockerイメージの各レイヤーのコンテンツ。 Ctrl + SPACEBAR を使用して、左ペインと右ペインを切り替えることができます キーと上/下 ディレクトリツリーをナビゲートするための矢印キー。
「ダイブ」を使用するためのキーボードショートカットのリスト。
- Ctrl+スペースバー -左ペインと右ペインを切り替えます。
- スペースバー -ディレクトリツリーを展開/折りたたみます
- Ctrl + A -追加されたファイルの表示/非表示
- Ctrl + R -削除されたファイルの表示/非表示
- Ctrl + M -変更されたファイルの表示/非表示
- Ctrl + U -変更されていないファイルの表示/非表示
- Ctrl + L -レイヤーの変更を表示します
- Ctrl + A -レイヤーの変更を表示します
- Ctrl + / -ファイルをフィルタリングします
- Ctrl + C -終了します。
上記の例では、Dockerイメージが / var / lib / docker / に保存されているため、「sudo」権限を使用しています。 ディレクトリ。 $ HOMEディレクトリまたは所有されていない「root」ユーザーにそれらがある場合は、「sudo」を使用する必要はありません。
Dockerイメージを作成し、という1つのコマンドですぐに分析を行うこともできます。
$ dive build -t <some-tag>
詳細については、以下に示すプロジェクトのGitHubページをご覧ください。