Docker超入門:複数コンテナの起動・停止・管理を1コマンドで!Docker Compose解説

 Dockerを使っていると、単体のコンテナを動かすだけじゃなくて、Webサーバー+DB+キャッシュ みたいに複数のコンテナを連携させたい場面が多く出てきます。
でも、1個ずつ docker run で起動して設定して…なんてやってたら面倒ですよね。

そこで登場するのが Docker Compose
 これを使えば、YAMLファイルにまとめて設定を書いて、1コマンドで複数コンテナを起動・停止・管理 できちゃいます。

Docker Composeファイルの作成

プロジェクトのルートディレクトリに docker-compose.yml を作ります。
このYAMLファイルの中に、複数のコンテナを「サービス」として定義していきます。

例として、Nginx+MariaDB のシンプルな構成を見てみましょう。

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mariadb:latest
    environment:
      - MARIADB_ROOT_PASSWORD=rootpass
      - MARIADB_DATABASE=sampledb
      - MARIADB_USER=sampleuser
      - MARIADB_PASSWORD=password

この設定だけで「Webサーバー(Nginx)」と「DBサーバー(MariaDB)」を同時に管理できます。

Docker Composeの主要コマンド

 Composeを使うと、長い docker run の代わりに短いコマンドでまとめて操作できるようになります。

コマンド説明
docker compose updocker-compose.yml に定義されたサービスをまとめて起動
docker compose down起動したサービスを停止し、関連リソースを削除
docker compose ps起動中のサービスの状態を確認
docker compose logsサービスのログを表示
docker compose exec実行中のコンテナ内でコマンドを実行
docker compose build定義されたイメージをビルド

例えば、YAMLファイルに上記のサービスを書いておけば、

docker compose up -d

と打つだけで NginxとMariaDBがまとめて起動 します。便利すぎますね。

共通環境の一貫性

Composeの良いところは「環境の再現性」。
YAMLファイルさえ共有すれば、誰でも同じ環境を再現できます。

  • チーム開発 → 開発者全員が同じ環境で作業できる
  • 本番環境やテスト環境 → Composeファイルを使い回せば設定のブレがなくなる

スケーラビリティとリソース管理

  • サービスのレプリカ数を増やすだけでスケールアウトできる。
  • 各サービスごとにCPUやメモリ制限を設定可能
  • ネットワークも自動管理してくれるので、サービス同士の通信設定もシンプル

例えば、Webサーバーを3台にスケールさせたいなら

docker compose up --scale web=3 -d

とするだけです。

まとめ

  • 複数のコンテナを1つのYAMLファイルでまとめられる。
  • 起動・停止・ログ確認・スケーリングなどを1コマンドで管理できる。
  • チームや環境間での共有がしやすく、再現性もバッチリ

Docker Composeを使えば、煩雑だった複数コンテナ管理が一気にスマートになります!