Docker Composeとは
Docker Composeとは、複数のDockerコンテナをまとめて定義・起動・管理するためのツール
読み: ドッカーコンポーズ
YAMLファイル1つで、Webサーバー、データベース、キャッシュサーバーなど複数のサービスの構成を記述し、1コマンドで全てを起動できる。AI開発環境では、LLM推論サーバー、記憶システム、監視ツールを1つのcompose.ymlにまとめて、チーム全員が同じ環境を再現できるようにする用途で使われる。
かんたんに言うと
「docker compose up」の1コマンドで、AIの推論サーバーもデータベースも監視ツールも全部まとめて起動する仕組み。設定ファイル1つで環境をまるごと再現できるため、「自分のPCでは動くけど他の人のPCでは動かない」問題がなくなる。
compose.ymlの基本構造
compose.ymlにはサービス(コンテナ)ごとの設定を記述する。使用するDockerイメージ、ポートマッピング、環境変数、ボリューム(データの永続化)、依存関係を定義する。サービス間はDockerネットワークで自動的に接続され、サービス名でお互いにアクセスできる。
AI開発環境での活用
AI開発ではLLM推論サーバー(Ollama等)、ベクトルデータベース(Milvus等)、MCPサーバー、監視ダッシュボードなど複数のサービスが必要になる。Docker Composeでこれらを1ファイルにまとめれば、新しいメンバーがgit cloneして「docker compose up」するだけで開発環境が立ち上がる。環境構築に半日かかっていた作業が数分で終わる。
KubernetesやDocker Swarmとの違い
Docker Composeは1台のマシン上で複数コンテナを管理するツール。複数マシンにまたがる大規模な運用にはKubernetesやDocker Swarmが必要になる。開発環境やテスト環境ではDocker Compose、本番環境ではKubernetesという使い分けが一般的。Docker Composeで動いた構成をKubernetesに移行するツールも存在する。
導入時の判断基準
サービスが3つ以上ある環境ではDocker Composeの導入効果が高い。2つ以下なら手動でdocker runした方が早い場合もある。compose.ymlをGitで管理すれば、環境の変更履歴も追跡できる。ただし、Docker自体の基礎知識がないと設定ファイルの意味が理解できないため、まずDockerの基本を押さえてから導入すべき。
Docker ComposeとKubernetesの比較
| 比較項目 | Docker Compose | Kubernetes |
|---|---|---|
| ネットワーク制御とスケール | 単一システムノード内でのマルチコンテナ管理 | 数百〜数千ノードをまたいでのクラスタ管理 |
| 可用性と回復力(自己修復) | コンテナに異常があっても別ノードへの自動再配置は不可 | ノード障害を検知して別ノードへ自動で再スケジュール |
| マルチノード対応 | YAMLファイル一つで完結し学習曲線が非常に緩やか | アーキテクチャが重厚で専門の学習コストが急激に高い |
| 運用管理コスト | 初期導入から実運用までの学習・運用コスト | 複雑なカスタマイズに応じた拡張的な運用コスト確保 |
| 学習曲線の急峻さ | シンプルなユースケースに適合し利用シナリオが限定的 | エンタープライズや複雑なビジネス要件等に適合する |
コンテナ群の運用フェーズで使い分けます。ローカルや開発環境を手軽に構築してテストするだけならDocker Compose、無停止での自動修復を伴う大規模本番クラスター構築にはKubernetesの出番となります。
当社の見解
当社はツール選定において実用性を第一方針にしている。カタログスペックやベンチマークスコアではなく、実務で1週間使い倒して初めて判断する。フレームワークを増やすほど管理コストが増える経験もした。フックを増やしすぎてAIが情報過多でパニックになったこともある。足し算だけでなく、引き算の判断が選定の質を決める。検証せずに導入したツールは、ほぼ例外なく3か月以内に使わなくなった。
