Docker Compose は、複数のコンテナを一括で定義し、管理するためのツールです。
アプリケーションを構成する複数のサービス(コンテナ)を、簡単に起動・停止・管理できます。これは主に YAML 形式の設定ファイル(compose.yaml/docker-compose.yml)を用いて行います。
主な特徴
複数コンテナの管理
複数のDockerコンテナを、1つのコマンドで起動、停止、削除できます。
シンプルな設定
設定ファイル(compose.yaml)に必要なサービスの構成を記述するだけで、それらを自動的にリンクし、ネットワークやボリュームを構成できます。複数のComposeファイルを使用することもできます。
Compose ファイルのデフォルト パスはcompose.yaml(推奨) またはcompose.ymlです。Compose は、以前のバージョンdocker-compose.yamlとの下位互換性もサポートしています。compose.yamlとdocker-compose.yamlの両方が存在する場合、compose.yamlを優先します。
環境の再現性
チームで共有すれば、異なる環境(開発、テスト、本番など)で同じ構成を再現できます。
ネットワークの自動設定
Composeを使うと、定義したすべてのコンテナが自動的に同じネットワーク上で通信できるようになります。
使用例
基本的な compose.yamlの例
以下は、Webアプリ(Nginx)とデータベース(MySQL)を構成する例です。
version: '3.8'
services:
web:
image: nginx:latest # nginxイメージを使用
ports:
- "8080:80" # ホストの8080ポートをコンテナの80ポートにマッピング
volumes:
- ./html:/usr/share/nginx/html # ローカルディレクトリをコンテナにマウント
depends_on:
- db # `db` サービスが先に起動する
db:
image: mysql:8.0 # MySQLの公式イメージ
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: exampledb
MYSQL_USER: user
MYSQL_PASSWORD: userpass
volumes:
- db_data:/var/lib/mysql # データを永続化
volumes:
db_data: # 永続化用のボリューム定義
主要なオプション
以下は compose.yaml におけるよく使われる設定項目です。
1. ベース設定
versionCompose ファイルのバージョンを指定します。
2.services
| オプション | 説明 |
|---|---|
image | 使用する Docker イメージ名を指定image: nginx:latest のように指定します。 |
build | イメージをビルドするための設定context でDockerfileの場所を指定。 |
command | コンテナ起動時に実行するコマンドを指定 |
ports | ホストとコンテナ間のポートマッピングを指定"8080:80"。 |
volumes | ホストとコンテナ間で共有するボリュームを指定 例: ./data:/app/data。 |
environment | 環境変数を指定 例: - ENV_VAR=value または辞書形式で指定。 |
env_file | 外部ファイルで環境変数を定義 |
depends_on | 起動順序を指定 (例: 他のサービスが先に起動する必要がある場合)(MySQL → Webの順など)。 |
networks | 複数のネットワークを定義してサービス間を分離可能。 |
restart | 再起動ポリシー (例: always, on-failure, no) |
container_name | コンテナ名を指定 |
3. volumes
- データを永続化するためのボリュームを定義します。
| オプション | 説明 |
|---|---|
driver | ボリュームのドライバーを指定 |
driver_opts | ドライバー用のオプション |
例: volumes
volumes:
data-volume:
driver: local4. networks
- サービス間の通信に使用するネットワークを定義します。
| オプション | 説明 |
|---|---|
driver | ネットワークのドライバーを指定 |
driver_opts | ドライバー用のオプション |
attachable | 外部コンテナを接続可能にする設定 |
例: networks
networks:
my-network:
driver: bridge5. configs
- 外部設定ファイルを定義して、サービスに渡すことができます。
例: configs
configs:
my-config:
file: ./config.txt6. その他の主要オプション
| オプション | 説明 |
|---|---|
secrets | セキュアな情報 (例: パスワード、証明書) をサービスに渡す |
logging | ログドライバーや設定を指定 |
deploy | スケーリングやリソース制限を含むデプロイメント設定 |
healthcheck | コンテナのヘルスチェック設定 |
extra_hosts | ホスト名と IP アドレスのマッピングを指定 |
ポイント
- YAML形式の注意
- インデントはスペースを使用(タブは使用しない)。
- キーと値の間はコロン(
:)を使う。
docker-composeコマンドと組み合わせる- サービスを起動:
docker-compose up - サービスを停止:
docker-compose down
- サービスを起動:
- バージョン互換性
versionは使用するDocker Composeバージョンに応じて適切に指定します(通常は3.8が推奨)。
主なコマンド
compose.yaml ファイルがあるディレクトリで以下のコマンドを実行します。
サービスを起動
docker-compose up (-d を追加するとバックグラウンドで実行)
docker-compose up -dサービスを停止
docker-compose downサービスの状態確認
docker-compose ps特定のサービスを再起動
docker-compose restart <service_name>サービスのログを表示
docker compose logs利用シーン
- ローカル開発環境の構築
複数のサービス(Webサーバー、データベース、Redisなど)を統一的に構築。 - テスト環境のセットアップ
テストごとに同じ環境を簡単に起動・破棄できる。 - コンテナの管理を効率化
手作業で複数のdocker runコマンドを実行する手間を省く。
チュートリアル
Docker公式チュートリアル
https://docs.docker.com/compose/gettingstarted/

参考
Docker Compose Documentation(日本語)
https://docs.docker.jp/compose/toc.html
Docker Compose Documentation(英語)
https://docs.docker.com/compose
Compose file reference
https://docs.docker.com/compose/compose-file/
Docker Compose クイックスタート:チュートリアル
https://docs.docker.com/compose/gettingstarted/
Docker Compose Documentation:複数のComposeファイルを使用する
https://docs.docker.com/compose/how-tos/multiple-compose-files
Docker Compose Documentation:コマンドリスト
https://docs.docker.com/reference/cli/docker/compose
Docker Compose Documentation:Overview of installing Docker Compose
https://docs.docker.com/compose/install/
Docker:Packet filtering and firewalls
https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw
Compose ファイルのバージョンとアップグレード
https://docs.docker.jp/compose/compose-file/compose-versioning.html#compose-file-versioning
コメント