【Docker基礎】Docker Composeとは

 Docker で本格的に複数コンテナを扱うシステム(WordPress+DBサーバなど)を管理する場合、コンテナやネットワーク、ボリュームなどをすべてコマンドで作成・管理していると手間がかかります。そこで登場するのが Docker Compose というツールです。
 Docker Compose を使うと、設定ファイル(YAML形式) に複数コンテナの構成やオプションを書いておけば、1 つのコマンドで一括して 「作成・起動」「停止・破棄」 などを行えるようになります。

1.Docker Compose とは?

  1. Docker コマンド群を定義ファイル(YAML)にまとめて実行できるツール
  2. 複数コンテナ(WordPress, MySQL など)の構築に役立ち、ネットワークやボリュームも一気に設定可能
  3. “up” コマンドでまとめて作成・起動、“down” コマンドでまとめて停止・削除ができる。
  4. 手動で何度もコマンドを打たなくても テキストファイル上で管理 できる。

2.なぜ Docker Compose が便利?

  • 複数コンテナを扱うとコマンドが増える
    ・例: WordPress 用コンテナ、MySQL 用コンテナ、ネットワーク、ボリュームなど
  • 手動管理は煩雑
    docker run コマンドを何度も入力、オプションも多様
    ・後片付け(停止・削除)も docker ps などで調べてからコマンドを複数回打つ。
  • 定義ファイルで一元管理
    ・コマンド群を 1 つの YAML ファイルにまとめ、docker-compose up 1 回でセットアップ完了
    docker-compose down でまとめて停止・削除

3.例:WordPress + MySQL で考える

通常は以下のような複数コマンドが必要です。

docker run MySQLコンテナ
docker run WordPressコンテナ
docker network create wordpress_net
docker volume create wordpress_volume
...

 しかし Docker Compose を使うと、定義ファイルdocker-compose.yml)に以下をまとめて書けます。

services:
  db:
    image: mysql:5.7
    ...
  wordpress:
    image: wordpress
    ...
networks:
  wordpress_net:
    ...
volumes:
  wordpress_volume:
    ...

図:コマンドは定義ファイルをまとめる

   ┌──────────────────────────────────┐
   │   docker-compose.yml             │
   │  (WordPress + MySQL + net + vol) │
   └──────────────────────────────────┘
      |               |            |       
      v               v            v
WP container   MySQL container  Net/Volume

これを docker-compose up -d のように一発で実行すると、
WordPressとMySQL、ネットワーク、ボリュームが一括作成され、起動します。

4.Docker Compose の仕組み

  1. 定義ファイル(docker-compose.yml
    ・コンテナで起動するサービス(どのイメージを使うか、ポートマッピング etc.)
    ・ネットワーク設定
    ・ボリューム設定
    ・環境変数や依存関係
  2. docker-compose up で「run」に相当する操作を一括実行
    ・イメージのダウンロード → コンテナ作成・起動 → ネットワーク生成 → ボリューム生成
  3. docker-compose down でコンテナとネットワークを停止・削除
    ・ボリュームとイメージは削除しない(削除方法の指定も可能)
  4. docker-compose stop は停止のみで削除は行わない。

5.Dockerfile と Docker Compose の違い

  • Dockerfile
    イメージを作るための手順書
    ・“コンテナ内部” の構成を定義 (FROM, RUN, COPY など)
  • Docker Compose
    複数コンテナの運用を定義するためのツール
    ・コンテナ同士の連携、ネットワーク、ボリューム管理を YAML で記述

まとめ

  • Docker Compose は複数コンテナをまとめて管理するための便利ツール
  • 定義ファイル(YAML) に設定を書いて、updown で一括制御
  • コマンドが増えて煩雑になってきたら、Compose への移行がおすすめ
  • Dockerfile は「イメージの構築手順」、Docker Compose は「コンテナをどう組み合わせて動かすか」――それぞれ用途が違う

 次のコンテンツでは、Docker Compose と Dockerfile の違いをさらに深掘りしながら、Compose の実践的な使い方を学んでいきましょう。