- 1年にも満たないエンジニア生活のため、雲の上の存在だと思っていて距離を取っていた「Docker」の習得を目指す記事第四弾。
- 「利用するツールやサービスの増大による最大の利点は、けがれなき無垢なロゴキャラとの対面である」という気高き名言の情報元を、長時間調査。
- 今回は、管理・分析ツールを利用した、効率的なDockerイメージの縮小化・最適化を図ることにしよう。
概要や特徴
- Go製のDockerイメージの分析・最適化ツール
- 作成イメージの容量解析や構造情報の詳細化等、構成の理解やイメージ効率化に役立つ。
- 主な特徴としては下記。
- 階層(レイヤー)ごとの詳細情報の可視化。
- イメージ容量(サイズ)の最適化・無駄情報の可視化。
- イメージの作成(ビルド)と分析の同時実行。
- CIシステム統合による、イメージテスト(解析)の実行。
結果
- 下記のように作成イメージを指定するだけで、各イメージやレイヤー(階層)の容量やフォルダ構造等の詳細情報を管理・確認することができる。
環境
- Mac OS X 10.13.4
- Homebrew 2.1.4
- ※Homebrew未導入の場合、こちらを参考にインストールする。
- Docker version 18.09.2
インストール
Mac
- Macでのdiveインストールは、下記のコマンドをうつ。
$ brew install dive
Windows
- Windowsでのインストールは、こちらのリリースページから最新のバージョンをインストール。
その他環境
- その他環境(Linux)でのインストールは、こちらを参考にする。
基本利用
分析画面構成
- diveでのDockerイメージ分析の流れとしては主に下記。
-
- イメージ指定したdiveコマンドで分析画面を起動
- 例:
dive sample_app:latest
-
- 起動後、各構造情報やイメージサイズを確認
-
- 確認後、無駄容量の削減や効率化等の最適化を考える。
-
- これらの流れの際に確認する「分析画面」の基本的な構成は下記。
エリア | 内容 |
---|---|
「Layers」 | 各レイヤー(階層)ごとの容量・出力情報 |
「Layer Details」 | 各レイヤー(階層)ごとの詳細情報 |
「Image Details」 | イメージの詳細情報 「Image efficiency score」はイメージ効率 「potential wasted space」は無駄容量 「Total image space」は総容量 |
「Aggregated Layer Contents」 | 各レイヤー(階層)のフォルダ情報 |
コマンド
- diveを利用してDockerイメージ分析を行う際の基礎的なコマンドとしては下記。
コマンド | 内容 |
---|---|
dive イメージ:タグ名 |
作成イメージの分析画面起動。 ※指定するイメージは docker images 等で確認。例: dive nginx:1.15.6 例: dive sample_app:latest
|
dive build -t タグ名 作業パス |
イメージのビルド(作成)と分析を同時に行う。 イメージをビルド(作成)するためにDockefile等が必要 例: dive build -t latest .
|
dive version |
バージョン確認 |
dive help |
ヘルプページ確認 |
分析画面ショートカット
- 分析画面では、主にキーボード操作によるもののため、基本的な操作一覧は下記。
キー | 内容 |
---|---|
tab |
詳細画面とファイル構造画面の切り替え |
Ctrl + F |
ファイルフィルタ。検索が可能。 |
Ctrl + L |
階層(レイヤー)変更の表示 |
Ctrl + M |
変更ファイルの表示 |
Ctrl + B |
属性の表示切り替え |
まとめ
- 今回は、ツールを利用した縮小化や最適化ということで、今まで重量級の無駄容量を抱えさせていたことを、反省と同時に一種の恋愛感情を感じながら記事を書く。
- 「将来的に、人類最適化ツールが出現したら、髪は残してくれるだろうか」というような夢想を、日常の八割の時間を利用して、全力で脳内議論。
- 次回は、徐々に理解できてきているインフラ関連技術のより魅力的なサービスを調査することにしよう。
参考サイト
-
https://github.com/wagoodman/dive
→こちらの記事を参考にしました。大変お世話になりました。 -
https://www.gekal.cn/blogs/2019/03/21/docker-layer-explore-dive.html
→こちらの記事を参考にしました。大変お世話になりました。