新人エンジニア向け!Docker Composeの仕組みと使い方をやさしく解説

こんにちは。ゆうせいです。

Dockerを使っていると、ある日こんなことに気づきます。

「コンテナが1つなら楽勝だけど、複数動かすとコマンドが長くて面倒…」

そこで登場するのがDocker Compose
今日は、この便利ツールを“開発チームの指揮者”に例えて、初心者でも理解できるように解説します。


1. Docker Composeとは?

Docker Composeは複数のコンテナをまとめて管理するツールです。

たとえばLaravelの開発では、こんなコンテナを使うことが多いです。

  • Webサーバー(Nginx)
  • アプリケーション(PHP-FPM)
  • データベース(MySQL)
  • キャッシュ(Redis)

これらを個別に起動すると、毎回こんな感じで面倒です。

docker run --name mydb ...
docker run --name myphp ...
docker run --name mynginx ...

Docker Composeなら1ファイルで全部管理できる!
しかも起動は docker compose up の一発です。


2. 仕組みのイメージ

Docker Composeは、docker-compose.yml という設定ファイルに**「使うコンテナ」「接続方法」「ボリューム」**などをまとめます。
このファイルが“楽譜”で、Docker Composeが“指揮者”です。

図にするとこうなります(英語ラベル例):

docker-compose.yml
    ├── web (nginx)
    ├── app (php-fpm)
    ├── db (mysql)
    └── redis

指揮者(Compose)が合図を出すと、全部のコンテナが正しい順序で起動します。


3. 最小構成の例

公式のNginxとMySQLを使ってみるサンプルです。

services:
  web:
    image: nginx:1.25
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
  • services: でコンテナを定義
  • image: 使うDockerイメージ
  • ports: ホスト側とコンテナ側のポートを対応
  • volumes: ローカルのフォルダをコンテナにマウント
  • depends_on: 起動順序を指定(ここではMySQLが先)

4. 基本コマンド

コマンド説明
docker compose upファイルの内容通りにコンテナを起動
docker compose up -dバックグラウンド起動
docker compose down起動中コンテナを停止&削除
docker compose ps現在の状態を表示
docker compose logs -fログをリアルタイムで見る
docker compose exec [サービス名] bashコンテナに入る

5. メリット

  1. 複数コンテナの起動が一発でできる
  2. 設定をコード化できる(IaC)
  3. 環境差異が減る(ファイルを渡すだけで同じ構成が再現できる)

6. 注意点

  • docker-compose.yml のインデントは厳密(スペース2 or 4)
  • ボリュームのマウント先を間違えるとデータが消えることがある
  • バージョンタグを明示しないと最新が動き、予期せぬ変更が入る可能性あり

7. まとめ

Docker Composeは、複数コンテナ開発の「面倒」を一気に解決してくれる指揮者のような存在です。

  • 複数コンテナを1ファイルで管理
  • docker compose up 一発で起動
  • チーム開発や本番前検証で必須

今後の学習の指針

  1. 単一コンテナのDocker runから始めて、Compose化してみる
  2. LaravelやWordPressなど、実際のアプリ環境をComposeで構築
  3. 複数ネットワークやボリュームを設定して本番に近い構成を試す

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。