MENU
Language

Docker Composeとは?複数のコンテナを一括で定義し、管理するためのツール

Docker Compose は、複数のコンテナを一括で定義し、管理するためのツールです。
アプリケーションを構成する複数のサービス(コンテナ)を、簡単に起動・停止・管理できます。これは主に YAML 形式の設定ファイル(compose.yaml/docker-compose.yml)を用いて行います。

目次

主な特徴

複数コンテナの管理
複数のDockerコンテナを、1つのコマンドで起動、停止、削除できます。

シンプルな設定
設定ファイル(compose.yaml)に必要なサービスの構成を記述するだけで、それらを自動的にリンクし、ネットワークやボリュームを構成できます。複数のComposeファイルを使用することもできます。

Compose ファイルのデフォルト パスはcompose.yaml(推奨) またはcompose.ymlです。Compose は、以前のバージョンdocker-compose.yamlとの下位互換性もサポートしています。
compose.yamldocker-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: local

4. networks

  • サービス間の通信に使用するネットワークを定義します。
オプション説明
driverネットワークのドライバーを指定
driver_optsドライバー用のオプション
attachable外部コンテナを接続可能にする設定

例: networks

networks:
  my-network:
    driver: bridge

5. configs

  • 外部設定ファイルを定義して、サービスに渡すことができます。

例: configs

configs:
  my-config:
    file: ./config.txt

6. その他の主要オプション

オプション説明
secretsセキュアな情報 (例: パスワード、証明書) をサービスに渡す
loggingログドライバーや設定を指定
deployスケーリングやリソース制限を含むデプロイメント設定
healthcheckコンテナのヘルスチェック設定
extra_hostsホスト名と IP アドレスのマッピングを指定

ポイント

  1. YAML形式の注意
    • インデントはスペースを使用(タブは使用しない)。
    • キーと値の間はコロン(:)を使う。
  2. docker-compose コマンドと組み合わせる
    • サービスを起動: docker-compose up
    • サービスを停止: docker-compose down
  3. バージョン互換性
    • 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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次