【初心者向け】Docker Composeとは|仕組みとメリットをわかりやすく解説

「【初心者向け】Docker Composeとは|仕組みとメリットをわかりやすく解説」のメインビジュアル

この記事は、「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つずつ起動する必要があります。

Docker Composeを使用しないデメリット(複数コンテナを手動で個別に起動する手間が発生)

例えば、RubyとPostgreSQLの環境を構築する場合を考えましょう。

  • Rubyのコンテナを作成・起動
  • PostgreSQLのコンテナを作成・起動

このようにコンテナの数が増えるほど、作成・起動、停止の手間も増えていきます

Docker Composeを使用する場合(コマンド1つでコンテナを一括作成・起動)

Docker Composeを使用すれば、docker-compose.yml(またはcompose.yml)に記述した設定に基づいて、1つのコマンドで必要なコンテナをまとめて起動できます。

Docker Composeを使用するメリット(複数コンテナをコマンド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を使用しない場合、コンテナ同士の設定を手動で行う必要があります。

そのため、コマンドを何度も実行する必要があり、設定ミスが発生しやすくなります

Docker Composeを使用しないデメリット(各コンテナを個別に起動し、ネットワークや環境変数を手動で設定する必要がある)- 1枚目
Docker Composeを使用しないデメリット(各コンテナを個別に起動し、ネットワークや環境変数を手動で設定する必要がある)- 2枚目

例えば、RubyのAPIとPostgreSQLデータベースを連携するためのネットワークを手動で設定する場合、以下の手順が必要になります。

  • 2つのコンテナが通信するためのネットワークを作成
  • Rubyコンテナを作成・起動し、ネットワークに所属させる
  • PostgreSQLコンテナを作成・起動し、Rubyコンテナと同じネットワークに所属させる

このように、コンテナの数が増えるほど設定の手間が増していきます。

Docker Composeを使用する場合(複数コンテナの一元管理)

Docker Composeを使用すると、複数のコンテナ設定をdocker-compose.ymlに一元化できます。

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の使用方法(Docker Desktopをインストール・起動して、Dockerコンテナを立ち上げる)- 1枚目
Dockerの使用方法(Docker Desktopをインストール・起動して、Dockerコンテナを立ち上げる)- 2枚目

具体的な手順は次のとおりです。

  • 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の導入や学習を始めるきっかけになれば幸いです。

Dockerとは何かを知りたい方はこちら

「【入門】Dockerとは|仕組みとメリットをわかりやすく解説」のメインビジュアル【初心者向け】Dockerとは|仕組みとメリットをわかりやすく解説

Docker Desktopのインストール方法を知りたい方はこちら

Docker Desktop for Macのインストール方法【画像付きで詳しく解説】

Docker・Docker Composeで環境構築をしたい方はこちら

【初心者向け】DockerでReactの環境構築をする(M1 Mac) 【初心者向け】DockerでRails APIとPostgreSQLの環境構築をする(M1 Mac) 【初心者向け】DockerでRails APIとMySQLの環境構築をする(M1 Mac)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA