Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ マルチコンテナアプリケーションの管理 | Docker Composeの操作
Docker Essentials

マルチコンテナアプリケーションの管理

メニューを表示するにはスワイプしてください

モダンなアプリケーションを構築する際には、ウェブサーバー、データベース、キャッシュなど、複数のサービスを連携させて統合システムとして動作させる必要があります。Docker Compose を使用すると、すべてのサービス、その依存関係、および相互の連携方法を、1つの docker-compose.yml ファイルで定義できます。

docker-compose.yml における依存関係とサービスリンクの定義

docker-compose.yml では、各サービスが依存関係を宣言し、他サービスとの接続方法を指定できます。depends_on キーを使うことで、サービスの起動順序を定義でき、たとえばアプリケーションがデータベースへ接続する前にデータベースが起動していることを保証できます。また、Compose はプロジェクトごとにデフォルトネットワークを自動作成し、サービス名をホスト名としてサービス間の通信や発見を容易にします。

たとえば、ウェブアプリケーションがデータベースに依存している場合、Compose ファイルは次のようにサービスを定義します:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

ここでは:

  • app サービスは db に依存しています;
  • Compose はアプリケーションより先にデータベースコンテナを起動します;
  • 両サービスは Compose ネットワーク内でサービス名をホスト名として相互に参照できます。

サービスのスケーリングと構成更新の戦略

Docker Compose を使うことで、サービスの水平スケーリングが容易になります。アプリケーションがより多くのトラフィックを処理する必要がある場合、--scale 実行時に docker compose up フラグを使ってサービスのコンテナ数を増やせます。

アプリケーションサービスを3インスタンス 実行するには、次のコマンドを使用します:

docker compose up --scale app=3
  • このコマンドは app サービスの 3つのコンテナ を起動します;
  • すべてのコンテナは同じネットワークに接続され、データベースなどのリソースを共有できます;
  • スケーリング時は、サービスがステートレスであるか、複数インスタンスに適切に対応できることを確認してください。

Compose 環境での構成更新も簡単です:

  • docker-compose.yml を修正します(例: 環境変数、リソース制限、サービスイメージの変更など);
  • 次のコマンドで変更を適用します:
docker compose up -d
  • このコマンドは、構成が変更されたサービスのみを再作成し、ダウンタイムを最小限に抑えます。

Compose を用いたマルチコンテナアプリケーションの監視とトラブルシューティング

複数のコンテナを運用する際には、監視とトラブルシューティングが重要です。Docker Compose には、サービスのヘルスやログを観察するためのツールが用意されています。すべてのコンテナからの出力をリアルタイムで確認するには、次のコマンドを使用します:

docker compose logs -f

このコマンドは全サービスのログをストリーム表示し、エラーや問題を即座に発見しやすくします。特定のサービスに注目したい場合は、サービス名を指定します:

docker compose logs db

トラブルシューティングの際は、次のコマンドで稼働中のコンテナに入ることができます:

docker compose exec app sh

このコマンドで app コンテナ内のシェルにアクセスでき、ファイルの確認、診断コマンドの実行、環境変数の確認などが可能です。リソース使用状況やコンテナのヘルス監視は、docker stats などの標準 Docker ツールでも行えます。

1. docker-compose.ymlファイルで、あるサービスが他のサービスより先に起動することを保証するキーはどれか?

2. Docker Composeを使って、workerというサービスを5つのインスタンスにスケールするにはどうすればよいか?

3. Composeアプリケーションで稼働中のすべてのサービスのライブログを表示するには、どのコマンドを使うか?

question mark

docker-compose.ymlファイルで、あるサービスが他のサービスより先に起動することを保証するキーはどれか?

正しい答えを選んでください

question mark

Docker Composeを使って、workerというサービスを5つのインスタンスにスケールするにはどうすればよいか?

正しい答えを選んでください

question mark

Composeアプリケーションで稼働中のすべてのサービスのライブログを表示するには、どのコマンドを使うか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt