Docker ComposeとKubernetesの違いは?本番運用と選び方を図解
先に答え:違いは「何台か」だけでなく「障害時に誰が復旧するか」
| 判断点 | Docker Compose | Kubernetes |
|---|---|---|
| 管理する範囲 | 基本は単一Dockerホスト上のサービス | クラスタのノードとPod |
| プロセスの異常終了 | restartポリシーで再起動可能 | kubeletの再起動とコントローラーによる状態維持 |
| ホスト障害 | 別ホストへの切替は別途設計 | 条件を満たせば別ノードにPodを再作成 |
| 負荷増加 | 手動の複製・構成変更など | HPAなどを設定して自動調整可能 |
| 共通して必要 | データ保護、監視、更新・復旧手順 | データ保護、監視、更新・復旧手順 |
「Composeは開発専用」「Kubernetesなら高可用性が保証される」は、どちらも正確ではありません。 たとえばWebアプリとDBが同じ1台にあるなら、コンテナの再起動ではサーバー故障を救えません。Kubernetesでも、DBの保存先が故障したノードにしかなければ同じ問題が残ります。
移行前に確認する3つの質問
- 何分止められるか。 再起動・手動復旧でよいのか、別ノードでの復旧が必要かを決めます。
- どこにデータがあるか。 コンテナを作り直した後に残る保存先と、バックアップからの復元を確認します。
- 誰が保守するか。 マネージドKubernetesでも、アプリ設定・権限・更新・監視の責任は残ります。
Docker自体の役割はDockerの仕組み、別のエンジンとの比較はPodmanとDockerも参照してください。
起動順・健康状態・復旧は別の機能
Composeのdepends_onは、短い書き方だけではDBが接続を受け付けられるまで待つ保証にはなりません。healthcheckとcondition: service_healthyを組み合わせると、起動時に依存サービスの健康状態を待つ構成にできます。起動後の切断に備えるアプリの再接続処理も必要です。
また、Composeのhealthcheckが不健康を報告しただけでは、通常のrestartポリシーによる再起動は起きません。プロセスが終了した場合の再起動とは区別します。Kubernetesではliveness probeの失敗でコンテナを再起動する設定ができ、readiness probeは通信を受け付ける準備を示すための別の検査です。
更新に失敗したら自動で前の版に戻る?
KubernetesのDeploymentは更新の進み具合を報告しますが、進行期限を超えたという理由だけで自動ロールバックはしません。前の版へ戻す判断や、kubectl rollout undoなどの手順を運用に組み込みます。DB変更や外部サービスへの副作用まで元に戻せるとは限らないため、アプリの更新とデータの復元も分けて考えましょう。
選び方のまとめ
1台の停止を許容でき、運用をシンプルにしたいならComposeが候補です。複数ノードへの配置や継続的な状態維持が必要で、保守体制も用意できるならKubernetesを検討します。導入前に、止めてよい時間とデータの保存先を具体化するのが先です。
参考資料
確認日:2026年10月4日。製品の仕様・料金・対応環境は導入時にも確認してください。
-
Docker: Use Compose in production:単一ホストの本番運用とrestart設定。
-
Compose services reference:restart・healthcheckの個別設定。
-
Kubernetes Overview:自己修復・スケーリングと提供しない機能。
-
Docker — Control startup and shutdown order:起動順とservice_healthyの違い。
-
Kubernetes — Deployments:進行期限とロールバック。
-
Kubernetes — Liveness, Readiness, and Startup Probes:再起動と準備状態の区別。