一言定義

OSの選択からアプリの起動まで、コンテナイメージの全製造工程をコードで定義する「レシピ」。

概要

ベースとなるOS(Image)、環境変数、インストールするパッケージ、コピーするソースコード、実行コマンドなどを順次記述したテキストファイル。このファイルを「ビルド」することで、不変(Immutable)なDockerイメージが生成される。

IT・技術的側面

  • レイヤー構造: 各命令(FROM, RUN, COPY等)が新しい読み取り専用レイヤーを作成し、積み重なる構造。

  • マルチステージビルド: 1つのDockerfile内でビルド用と実行用のステージを分け、最終イメージを軽量化。

  • エントリポイント: コンテナ起動時に実行されるメインプロセスを固定し、コンテナを「一つのコマンド」のように振る舞わせる。

ビジネス적価値とリスク

  • 価値:

    • 資産としてのインフラ: 手順書ではなくコードで管理するため、Gitでのバージョン管理が可能。

    • ビルドの高速化: レイヤーキャッシュにより、変更のない部分は即座に完了。

    • デプロイの信頼性: 常に同じ手順でビルドされるため、「手作業による設定ミス」を完全に排除。

  • リスク:

    • イメージの肥大化: 不要なキャッシュやログを含めるとデプロイ時間が延び、ストレージコストを圧迫。

    • セキュリティの腐敗: 古いベースイメージを使用し続けると、既知の脆弱性がコンテナ内に残り続ける。

定量的指標

  1. Image Size: 最終的なコンテナイメージの容量(MB)。

  2. Build Time (Cached vs Non-Cached): キャッシュの有無によるビルド時間の差。

  3. Scan Critical Issues: イメージスキャンで見つかった重要度「高」以上の脆弱性数。

概念の配置(Context)

  • Position: ソフトウェアデリバリーにおける「成果物定義(Artifact Definition)」の核。

  • Contrast: シェルスクリプト|スクリプトは逐次処理を実行するが、Dockerfileは最終的な「不変の静的状態」を作り出す。

関連キーワード