一言定義
OSの選択からアプリの起動まで、コンテナイメージの全製造工程をコードで定義する「レシピ」。
概要
ベースとなるOS(Image)、環境変数、インストールするパッケージ、コピーするソースコード、実行コマンドなどを順次記述したテキストファイル。このファイルを「ビルド」することで、不変(Immutable)なDockerイメージが生成される。
IT・技術的側面
-
レイヤー構造: 各命令(FROM, RUN, COPY等)が新しい読み取り専用レイヤーを作成し、積み重なる構造。
-
マルチステージビルド: 1つのDockerfile内でビルド用と実行用のステージを分け、最終イメージを軽量化。
-
エントリポイント: コンテナ起動時に実行されるメインプロセスを固定し、コンテナを「一つのコマンド」のように振る舞わせる。
ビジネス적価値とリスク
-
価値:
-
資産としてのインフラ: 手順書ではなくコードで管理するため、Gitでのバージョン管理が可能。
-
ビルドの高速化: レイヤーキャッシュにより、変更のない部分は即座に完了。
-
デプロイの信頼性: 常に同じ手順でビルドされるため、「手作業による設定ミス」を完全に排除。
-
-
リスク:
-
イメージの肥大化: 不要なキャッシュやログを含めるとデプロイ時間が延び、ストレージコストを圧迫。
-
セキュリティの腐敗: 古いベースイメージを使用し続けると、既知の脆弱性がコンテナ内に残り続ける。
-
定量的指標
-
Image Size: 最終的なコンテナイメージの容量(MB)。
-
Build Time (Cached vs Non-Cached): キャッシュの有無によるビルド時間の差。
-
Scan Critical Issues: イメージスキャンで見つかった重要度「高」以上の脆弱性数。
概念の配置(Context)
-
Position: ソフトウェアデリバリーにおける「成果物定義(Artifact Definition)」の核。
-
Contrast: シェルスクリプト|スクリプトは逐次処理を実行するが、Dockerfileは最終的な「不変の静的状態」を作り出す。