どんな環境でも同じように動くように、アプリと設定をひとまとめにパッキングする「コンテナ」技術です。開発者のパソコンで動くものを、そのまま本番環境でも再現できるため、環境構築のストレスをなくしてくれます。

一言定義

アプリケーションの実行環境をカプセル化し、環境差異によるコストをゼロ化する「標準規格」。

概要

Linuxコンテナ技術を基盤とし、アプリケーションとその実行に必要なライブラリや設定を一つの「イメージ」としてパッケージ化するプラットフォーム。インフラをコードとして扱い、開発・テスト・本番環境の完全な一致を保証することで、ソフトウェアのポータビリティを劇的に向上させる。

IT・技術的側面

  • カーネル共有: ホストOSのカーネルを共有しつつ、名前空間(Namespace)とコントロールグループ(cgroups)を用いてプロセスを分離。

  • 不変インフラ: 一度ビルドされたイメージは書き換え不可であり、デプロイの再現性を保証。

  • 軽量性: ゲストOSを含まないため、VM(仮想マシン)に比べ起動が高速であり、リソース消費が極めて少ない。

ビジネス的価値とリスク

  • 価値:

    • 開発効率の向上: 「自分のマシンでは動く」というトラブルを排除し、オンボーディング時間を短縮。

    • スケーラビリティ: 起動の速さを活かし、トラフィックに応じた迅速なオートスケーリングを実現。

    • 運用コスト削減: サーバーリソースの集約率を高め、クラウド利用料を最適化。

  • リスク:

    • セキュリティ境界: カーネル共有型のため、脆弱性を突いたコンテナ脱出攻撃のリスクがVMより高い。

    • 管理の複雑化: 膨大なコンテナの生存確認やログ管理に、Kubernetes等の新たな学習コストが発生。

定量的指標

  1. Time-to-Deploy: デプロイ完了までの所要時間。

  2. Infrastructure Density: 物理リソースあたりの実行アプリケーション数。

  3. Environment Parity Index: 環境間の構成差異に起因するバグの発生率。

概念の配置(Context)

  • Position: 仮想化技術(Virtualization)のサブカテゴリーであり、OSレベルの仮想化に位置付け。

  • Contrast: 仮想マシン(VM)|VMがハードウェアを模倣するのに対し、DockerはOSのプロセスを論理的に分離する。

  • Synthesis: 物流における「コンテナ輸送」|中身を問わずサイズを統一することで、輸送・積み替えの自動化と効率化を実現する論理的共通点。

関連キーワード