コンテナイメージの縮小

docker

コンテナイメージを小さくするメリット

  • パフォーマンス
    • イメージビルドの時間短縮
    • レジストリの容量節約
  • セキュリティ (このへんはよくわかってない)
    • 余計なモジュールを入れない
    • GCPの公式 が言うにはバグが潜む原因になるそう

小さくするための方法

  • 小さいベースイメージを利用
    • Alpine Linux など
  • ビルドパターン
    • マルチステージビルド
    • ビルドで使うコンテナと最終的な実行可能ファイルだけを詰め込んだコンテナを分られる

マルチステージビルド

マルチステージビルドは、バージョン17.05 からサポートされたDockerの機能となります。
通常のDockerfileでは以下のように定義します。

マルチステージビルドを利用すると以下のように記述できます。

試してみる

FFMpegのコンテナイメージを作成する場合を試す。
前提としてベースイメージは Amazon Linux を利用する。

結果

  • 通常のビルドの場合
    • 2.27GB
  • マルチステージビルドの場合
    • 731MB

通常のビルドに比べ約 32% まで小さくなりました。

最後に

マルチビルドを 利用することで、影響範囲を分けられるのでビルドキャッシュが有効的に利用できます。
難点としては none イメージが大量にできてしまうことでしょうか。

参考

この記事を書いた人

高橋克幸
高橋克幸
新卒3年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。

docker