DUICUO

Dockerコンテナイメージの内容を分析および調査する方法

Dockerコンテナイメージは、アプリケーションの実行に必要なすべてのソフトウェアを含む軽量のスタンドアロン実行ファイルであることは既にご存知かもしれません。そのため、開発者はアプリケーションの構築と配布にコンテナイメージを頻繁に利用しています。Dockerイメージに何が含まれているのか知りたい方は、この簡単なガイドが役立つかもしれません。今日は、 Diveというツールを使ってDockerイメージの各レイヤーのコンテンツを分析・探索する方法を学びます。

Dockerイメージを分析することで、レイヤー間で重複している可能性のあるファイルを特定し、それらを削除することでイメージサイズを削減できます。Diveは単なるDockerイメージ分析ツールではなく、イメージのビルドにも役立ちます。DiveはGoプログラミング言語で書かれた無料のオープンソースツールです。

ダイブをインストール

まず、プロジェクトのリリース ページから *** バージョンをダウンロードし、以下に示すように、ディストリビューションに応じてインストールします。

DebianまたはUbuntuを使用している場合は、次のコマンドを実行してダウンロードおよびインストールできます。

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

RHELまたはCentOSシステムの場合

  1. $ wget https : //github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
  1. $ sudo rpm - i dive_0 . 0.8 _linux_amd64 . rpm

Dive は Linuxbrew パッケージ マネージャーを使用してインストールすることもできます。

  1. $ brew tap wagoodman / dive
  1. $ brew install dive

その他のインストール方法については、Dive プロジェクトの GitHub ページを参照してください。

Dockerイメージの内容を分析して調査する

Dockerイメージを分析するには、 diveコマンドに続けてDockerイメージIDを実行します。 sudo docker imagesを使用するとDockerイメージIDを取得できます。

  1. $ sudo dive ea4c82dcd15a

上記のコマンドでは、 ea4c82dcd15aは特定のイメージの ID です。

次に、 diveコマンドは指定された Docker イメージの内容をすばやく分析し、ターミナルに表示します。

上のスクリーンショットでわかるように、ターミナルの左側の列には、指定されたDockerイメージのレイヤーとその詳細(無駄なスペースを含む)が表示されます。右側の列には、指定されたDockerイメージの各レイヤーの内容が表示されます。Ctrl Ctrl+空格で左右の列を切り替え、 UP DOWNキーでディレクトリツリーを参照できます。

以下は、 diveのキーボード ショートカットの一覧です。

  • 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 >

Diveツールはまだベータ版であるため、バグが存在する可能性があります。バグに遭遇した場合は、プロジェクトのGitHubホームページにご報告ください。

さて、今日の内容はこれで終わりです。Diveツールを使ってDockerコンテナイメージの内容を探索・分析する方法、そしてそれを使ってイメージをビルドする方法が分かりました。この記事がお役に立てば幸いです。