この記事は、「Dockerは聞いたことあるけど、Docker Composeって何ができるの?」「どういう場面で便利なの?」そんな疑問を持っている方に向けて、Docker Composeの基本をわかりやすく解説する入門記事です。
この記事を読むと、Docker Composeの仕組みやメリット、どんな場面で活用できるのかが理解できるようになります。
ポイントを一つずつ確認しながら、Docker Composeの基本を一緒に見ていきましょう!
単語の意味
本記事で使用する単語のざっくりとした意味を紹介します。
記事の内容をスムーズに理解するための参考にしてください。
- イメージ:コンテナを作成するための「設計図」のようなものです。
- コンテナ:イメージをもとに作られる、独立した「アプリケーションの実行環境」のことです。
- Host OS:(本記事では)普段使っているMacやWindowsなどのPCのOSのことです。
Docker Composeとは
Docker Composeとは、「複数コンテナを簡単に管理・実行できるツール」です。
ざっくり言うと、以下の2つの仕組みを実現します。
- ①コマンド1つで複数コンテナを同時に起動できる
- ②複数コンテナの設定を一元管理できる
それぞれ詳しく見ていきましょう。
①コマンド1つで複数コンテナを同時に起動できる
Docker Composeでは、docker-compose.yml
(またはcompose.yml
)に必要な設定を記述し、docker compose
コマンドで複数のコンテナを一括起動できます。
例えば、次のようなコマンドがあります。
$ docker compose up
:コンテナを起動し、フォアグラウンドで実行(ログを表示)$ docker compose up -d
:コンテナを起動し、バックグラウンドで実行(ログを非表示)
💡 フォアグラウンド実行とは、コマンド実行時にターミナルへログを表示しながら処理を実行する方法です。一方、バックグラウンド実行とは、ターミナルへログを表示せずに処理を実行する方法です。
コマンド1つで複数コンテナを同時に起動するメリット
Docker Composeを使用すれば、複雑な環境構築手順を省略し、コマンド1つで複数のコンテナを簡単に立ち上げられます。
Docker Composeを使用しない場合(個別にコマンドを実行しコンテナを作成・起動)
Docker Composeを使用しない場合、各コンテナを手動で1つずつ起動する必要があります。

例えば、RubyとPostgreSQLの環境を構築する場合を考えましょう。
- Rubyのコンテナを作成・起動
- PostgreSQLのコンテナを作成・起動
このようにコンテナの数が増えるほど、作成・起動、停止の手間も増えていきます。
Docker Composeを使用する場合(コマンド1つでコンテナを一括作成・起動)
Docker Composeを使用すれば、docker-compose.yml
(またはcompose.yml
)に記述した設定に基づいて、1つのコマンドで必要なコンテナをまとめて起動できます。

例えば、以下のコマンドを実行するだけで、複数コンテナが同時に起動します。
$ docker compose up
or
$ docker compose up -d
このように、Docker Composeを使えば、環境構築を効率化し、開発作業にすぐ取りかかることができます。
②複数コンテナの設定を一元管理できる
Docker Composeを使用すると、複数のコンテナに必要な設定(ポートマッピング、ボリューム、ネットワーク設定など)を1つの設定ファイルで一元的に管理できます。
設定できる主な項目を以下に記載します。
- サービス(services):アプリケーションを構成する各コンテナの定義
- ボリューム(volumes):データの永続化(コンテナが終了してもデータを保持)や、ホストとコンテナ間でファイルを共有するための設定
- 環境変数(environment):コンテナ内のアプリケーションで使用する環境変数の設定
- ポート番号(ports):コンテナとホスト間のポートマッピング設定
- ネットワーク(networks):コンテナ間の通信設定(省略するとデフォルトのネットワークが自動作成される)
※他の設定項目については、Compose ファイルリファレンス(日本語版 Docker ドキュメント)で確認できます。
例えば、RubyのAPIとPostgreSQLデータベースを連携させる場合、docker-compose.yml
(またはcompose.yml
)に以下のように記述します。
【docker-compose.ymlの例】
version: '3'
services:
app:
build: .
ports:
- 9292:9292
environment:
DB_HOST: database
DB_USER: user
DB_PASSWORD: password
volumes:
- .:/app
depends_on:
- database
networks:
- backend-network
database:
image: postgres:15
ports:
- 5432:5432
environment:
POSTGRES_DB: app_db
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- backend-network
volumes:
postgres-data:
networks:
backend-network:
driver: bridge
複数コンテナの設定を一元管理するメリット
Docker Composeを使用すると、複数のコンテナ構成を1つのファイルにまとめて管理できるため、全体の構成を視覚化しやすくなり、設定ミスや管理工数を削減できます。
Docker Composeを使用しない場合(個別コンテナの手動管理)
Docker Composeを使用しない場合、コンテナ同士の設定を手動で行う必要があります。
そのため、コマンドを何度も実行する必要があり、設定ミスが発生しやすくなります。


例えば、RubyのAPIとPostgreSQLデータベースを連携するためのネットワークを手動で設定する場合、以下の手順が必要になります。
- 2つのコンテナが通信するためのネットワークを作成
- Rubyコンテナを作成・起動し、ネットワークに所属させる
- PostgreSQLコンテナを作成・起動し、Rubyコンテナと同じネットワークに所属させる
このように、コンテナの数が増えるほど、設定の手間が増していきます。
Docker Composeを使用する場合(複数コンテナの一元管理)
Docker Composeを使用すると、複数のコンテナ設定をdocker-compose.yml
に一元化できます。

例えば、RubyコンテナとPostgreSQLコンテナのネットワーク設定を1つのファイルで定義すると、以下の手順で環境を構築できます。
docker-compose.yml
を作成する(RubyとPostgreSQLの設定を記述)docker compose up
を実行し、コンテナを作成・起動する(ネットワークの作成やコンテナのネットワークへの所属が自動で行われる)
このように、コンテナの設定を一元管理でき、設定ミスを減らし、設定の再利用も容易になります。
Docker Composeの使用方法(開発環境の構築を例に説明)
Docker Composeを使用する手順を、開発環境の構築を例に説明します。
Docker Composeの基本的な使い方:Docker Desktopをインストール・起動して、Docker ComposeでDockerコンテナを立ち上げる


具体的な手順は次のとおりです。
- Docker DesktopをPCにインストール・起動する
- Dockerfileを作成する
- docker-compose.yml(compose.yml)を作成する
- docker-compose.yml(compose.yml)からDockerイメージを構築する(Docker Composeコマンドを実行する)
- Dockerイメージからコンテナを作成・起動する(Docker Composeコマンドを実行する)
上記の手順で作成・起動されたDockerコンテナ上で、アプリケーションを動かせるようになります。
Docker Composeを使用する大まかな流れは以上になります。
まとめ
この記事では、Docker Composeの仕組みとメリットについて初心者向けに解説しました。
Docker Composeを使うことで、以下の2つを実現できることがわかりました。
- ①コマンド1つで複数コンテナを同時に起動できる
- ②複数コンテナの設定を一元管理できる
Docker Composeを活用できるようになると、開発環境の構築が効率化されるだけでなく、チーム全体の生産性も向上します。
本記事がDocker Composeの導入や学習を始めるきっかけになれば幸いです。




