【どっかーこんぽーず】

Docker Compose とは?

最終更新:
💡 「docker compose up」のひとことで、複数のコンテナをまとめて起動

複数のコンテナで構成されるアプリケーションをYAMLファイル(compose.yaml)で定義し、まとめて起動・停止・管理するツール。ローカルの開発環境づくりによく使われる。

📌 このページのポイント
Docker Compose:YAMLで複数コンテナを一括管理 構成イメージ services: web → Node.js db → PostgreSQL cache → Redis volumes: networks: 実際のYAML構文は省略 docker compose up Docker ネットワーク(自動作成) Web Node.js :3000 DB PostgreSQL :5432 Cache Redis :6379 1コマンドで起動・停止・再構築 → 開発環境を標準化
compose.yamlで定義した複数コンテナ(Web + DB + Cache)を一括管理
ひよこ ひよこ
Docker Composeって普通のDockerと何が違うの?
ペンギン先生 ペンギン先生
docker runコマンドはコンテナを1つずつ起動するものだけど、実際のアプリは「Webサーバー+DB+キャッシュ」みたいに複数のコンテナを組み合わせることが多いよね。Docker Composeは、それらを1つのファイルにまとめて定義して、一緒に起動・停止できるツールなんだ。
ひよこ ひよこ
YAMLファイルにはどんなことを書くの?
ペンギン先生 ペンギン先生
大きく分けて、サービス(動かすコンテナの定義)、ネットワーク、ボリューム(データの保存先)を書くよ。サービスごとに、使うイメージ、公開するポート、環境変数などを指定するんだ。特に設定しなくてもアプリ用のネットワークが1つ作られて、各サービスは「db」のようなサービス名で互いに通信できるよ。
ひよこ ひよこ
docker-compose.ymlとcompose.yamlの違いは?
ペンギン先生 ペンギン先生
今の推奨はcompose.yamlで、docker-compose.ymlやdocker-compose.yamlは互換性のために残っている名前だよ。コマンドにも新旧があって、Python製のv1は「docker-compose」、Go製のv2は「docker compose」(ハイフンなし)で呼び出すんだ。今はv2の書き方を使おう。
ひよこ ひよこ
Kubernetesとはどう使い分けるの?
ペンギン先生 ペンギン先生
Composeが得意なのは、1台のDockerホストの上で複数のコンテナをまとめて動かすこと。何台ものサーバーにコンテナを配置して管理したいときは、Kubernetesのようなオーケストレーションツールや、ComposeファイルをSwarmクラスターで動かす方法を検討するよ。
ひよこ ひよこ
本番環境でも使っていいの?
ペンギン先生 ペンギン先生
公式ドキュメントは、Composeは本番を含むあらゆる環境で動くと説明しているよ。ただ、本番向けには設定を変えるよう勧めていて、アプリのコードをホストから差し込むボリュームを外す、「restart: always」のような再起動ポリシーを指定する、ログ集約などのサービスを足す、といった項目が挙がっているんだ。止められないサービスなら、サーバー1台が落ちたときの備えも別に考える必要があるね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Docker Compose」って出てきたら「複数コンテナをYAMLにまとめて一括で起動するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Docker Compose」 = Dockerの構成・組み立て
💬 compose は「構成する・組み立てる」という意味の英語だよ。複数のコンテナを1つのアプリとして組み立てる、と考えると覚えやすいね

参考資料

← 用語集にもどる