どんな環境でも同じように動くように、アプリと設定をひとまとめにパッキングする「コンテナ」技術です。開発者のパソコンで動くものを、そのまま本番環境でも再現できるため、環境構築のストレスをなくしてくれます。
一言定義
アプリケーションの実行環境をカプセル化し、環境差異によるコストをゼロ化する「標準規格」。
概要
Linuxコンテナ技術を基盤とし、アプリケーションとその実行に必要なライブラリや設定を一つの「イメージ」としてパッケージ化するプラットフォーム。インフラをコードとして扱い、開発・テスト・本番環境の完全な一致を保証することで、ソフトウェアのポータビリティを劇的に向上させる。
IT・技術的側面
-
カーネル共有: ホストOSのカーネルを共有しつつ、名前空間(Namespace)とコントロールグループ(cgroups)を用いてプロセスを分離。
-
不変インフラ: 一度ビルドされたイメージは書き換え不可であり、デプロイの再現性を保証。
-
軽量性: ゲストOSを含まないため、VM(仮想マシン)に比べ起動が高速であり、リソース消費が極めて少ない。
ビジネス的価値とリスク
-
価値:
-
開発効率の向上: 「自分のマシンでは動く」というトラブルを排除し、オンボーディング時間を短縮。
-
スケーラビリティ: 起動の速さを活かし、トラフィックに応じた迅速なオートスケーリングを実現。
-
運用コスト削減: サーバーリソースの集約率を高め、クラウド利用料を最適化。
-
-
リスク:
-
セキュリティ境界: カーネル共有型のため、脆弱性を突いたコンテナ脱出攻撃のリスクがVMより高い。
-
管理の複雑化: 膨大なコンテナの生存確認やログ管理に、Kubernetes等の新たな学習コストが発生。
-
定量的指標
-
Time-to-Deploy: デプロイ完了までの所要時間。
-
Infrastructure Density: 物理リソースあたりの実行アプリケーション数。
-
Environment Parity Index: 環境間の構成差異に起因するバグの発生率。
概念の配置(Context)
-
Position: 仮想化技術(Virtualization)のサブカテゴリーであり、OSレベルの仮想化に位置付け。
-
Contrast: 仮想マシン(VM)|VMがハードウェアを模倣するのに対し、DockerはOSのプロセスを論理的に分離する。
-
Synthesis: 物流における「コンテナ輸送」|中身を問わずサイズを統一することで、輸送・積み替えの自動化と効率化を実現する論理的共通点。