新人エンジニア向け!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. メリット
- 複数コンテナの起動が一発でできる
- 設定をコード化できる(IaC)
- 環境差異が減る(ファイルを渡すだけで同じ構成が再現できる)
6. 注意点
docker-compose.yml
のインデントは厳密(スペース2 or 4)- ボリュームのマウント先を間違えるとデータが消えることがある
- バージョンタグを明示しないと最新が動き、予期せぬ変更が入る可能性あり
7. まとめ
Docker Composeは、複数コンテナ開発の「面倒」を一気に解決してくれる指揮者のような存在です。
- 複数コンテナを1ファイルで管理
docker compose up
一発で起動- チーム開発や本番前検証で必須
今後の学習の指針
- 単一コンテナのDocker runから始めて、Compose化してみる
- LaravelやWordPressなど、実際のアプリ環境をComposeで構築
- 複数ネットワークやボリュームを設定して本番に近い構成を試す
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。