diveでDockerイメージのファイルを調査する

お仕事にてDocker (Pythonアプリケーション) のイメージサイズの削減に挑戦する機会がありました。その調査で用いた dive について紹介します。

diveとは

diveはイメージやレイヤのコンテンツ (ファイル) を可視化するためのツールで、主にイメージサイズの削減のための調査に用いられます。

github.com

MacであればHomebrewでインストールできます。

$ brew install dive

diveを使った調査

例として python:3.9-slim-buster をdiveで覗いてみます。dive {image_name}:{image_tag}でOKです。

$ dive python:3.9-slim-buster

すると2カラムのコンソール画面が開きます。

Layers (左上) がDockerのレイヤとなっており、選択したレイヤのファイルがCurrent Layer Contents (右) に表示されます。

f:id:ohke:20201017223421p:plain

Layersで2つ目のレイヤを選択します。このレイヤで7MBの増です。

f:id:ohke:20201017224126p:plain

Current Layer Contentsではこのレイヤでのファイルがツリー表示されます。緑文字が増加したファイル・ディレクトリを表しています。ドリルダウンもできるので、不意に増えているファイルなどが調査できます。

f:id:ohke:20201017224554p:plain