はじめに
このチュートリアルは、コンテナの管理に必要な Docker Compose コマンドの概要を網羅的に説明します。Docker に初めて触れる方でも、経験豊富なユーザーの方でも、このガイドは Docker Compose を使用してコンテナ化されたアプリケーションを効率的にオーケストレーションおよび管理するための必要な知識を提供します。
Docker Compose の基礎
Docker Compose は、マルチコンテナアプリケーションの管理とデプロイを簡素化する強力なツールです。シンプルな YAML 設定ファイルを使用して複雑なアプリケーションを定義および実行できるため、コンテナのライフサイクルをより簡単に管理できます。
Docker Compose について
Docker Compose は、Docker エコシステムの一部であるツールです。マルチコンテナ Docker アプリケーションを定義および実行するために使用されます。Docker Compose を使用すると、アプリケーションに必要なすべてのサービス、ネットワーク、ボリュームを定義する単一の構成ファイルを作成できます。これにより、アプリケーション全体を簡単にデプロイおよび管理できます。
Docker Compose のインストール
Ubuntu 22.04 システムで Docker Compose をインストールするには、以下の手順に従います。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
これにより、最新の Docker Compose がダウンロードされ、システムにインストールされます。
Docker Compose ファイルの作成
Docker Compose の中心は、通常 docker-compose.yml という名前の YAML 構成ファイルです。このファイルは、アプリケーションを構成するサービス、ネットワーク、ボリュームを定義します。以下に例を示します。
version: "3"
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
この構成ファイルは、Nginx を実行するウェブサーバーと MySQL データベースの 2 つのサービスを定義しています。
Docker Compose アプリケーションの実行
docker-compose.yml ファイルを作成したら、以下のコマンドを使用してアプリケーションを実行できます。
docker-compose up -d
これにより、構成ファイルに定義されているすべてのサービスがデタッチモードで起動し、ターミナルを継続して使用できます。
コンテナのスケーリングと管理
Docker Compose を使用すると、特定のサービスのレプリカ数を増減することで、アプリケーションを簡単にスケーリングできます。docker-compose scale コマンドを使用してこれを実行できます。
docker-compose scale web=3
これにより、web サービスが 3 つのレプリカにスケーリングされます。
コンテナ管理のための Docker Compose の主要コマンド
Docker Compose は、コンテナを管理するための幅広いコマンドを提供します。ここでは、知っておくべき最も重要なコマンドをいくつか紹介します。
コンテナの構築と起動
docker-compose build: サービスを構築または再構築します。docker-compose up: すべてのサービスを起動します。docker-compose up -d: すべてのサービスをデタッチモードで起動します。
コンテナの停止と削除
docker-compose stop: 実行中のサービスを停止します。docker-compose down: コンテナ、ネットワーク、イメージ、ボリュームを停止および削除します。
コンテナのリスト表示と検査
docker-compose ps: すべての稼働中のコンテナをリスト表示します。docker-compose logs: サービスのログ出力を表示します。docker-compose config: Compose ファイルの検証と表示を行います。
コンテナのスケーリングと更新
docker-compose scale: サービスをアップまたはダウンスケールします。docker-compose up --scale web=3:webサービスを 3 つのレプリカにスケーリングします。docker-compose pull: サービスのイメージを最新のものにプルします。docker-compose push: サービスイメージをプッシュします。
ボリュームとネットワークの管理
docker-compose volume ls: すべてのボリュームをリスト表示します。docker-compose volume rm: 1 つ以上のボリュームを削除します。docker-compose network ls: すべてのネットワークをリスト表示します。docker-compose network rm: 1 つ以上のネットワークを削除します。
これらのコマンドは、Docker Compose ベースのアプリケーションを管理するための包括的なツールセットを提供します。これらのコマンドを理解し、使用することで、コンテナのライフサイクルを効果的に管理し、マルチコンテナアプリケーションの円滑な動作を確保できます。
Docker Compose の実用的な例
このセクションでは、アプリケーションの管理に Docker Compose を使用する実用的な例をいくつか紹介します。
例 1: Web アプリケーションとデータベースのデプロイ
MySQL データベースが必要な Web アプリケーションがあるとします。このセットアップを定義および管理するために docker-compose.yml ファイルを作成できます。
version: "3"
services:
web:
image: myapp/web:latest
ports:
- "80:8080"
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
この例では、web と db の 2 つのサービスがあります。web サービスは Web アプリケーションを実行し、db サービスは MySQL データベースを実行します。depends_on フィールドは、web サービスが db サービスの後で起動されることを保証します。
このアプリケーションをデプロイするには、次のコマンドを実行できます。
docker-compose up -d
これにより、アプリケーションはデタッチモードで起動し、ターミナルを継続して使用できます。
例 2: サービスのスケーリング
Web アプリケーションのトラフィック処理能力を高めたいとします。docker-compose scale コマンドを使用して、これを実行できます。
docker-compose scale web=3
これにより、web サービスが 3 つのレプリカにスケーリングされ、複数のコンテナに負荷を分散できます。
例 3: マルチティアアプリケーションのデプロイ
Docker Compose は、フロントエンド、バックエンド、データベースを持つ Web アプリケーションなど、マルチティアアプリケーションの管理に特に役立ちます。以下に例を示します。
version: "3"
services:
frontend:
image: myapp/frontend:latest
ports:
- "80:80"
depends_on:
- backend
backend:
image: myapp/backend:latest
environment:
DB_HOST: db
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
この例では、frontend、backend、db の 3 つのサービスがあります。frontend サービスは backend サービスに依存し、backend サービスは db サービスに依存します。これにより、アプリケーションは正しい順序でデプロイされます。
Docker Compose を使用すると、マルチティアアプリケーションのデプロイとスケーリングを簡単に管理できます。コンテナベースの開発とデプロイのための強力なツールです。
まとめ
このチュートリアルでは、Docker Compose の基本的な使い方から、実用的な例まで、コンテナ管理のための重要な Docker Compose コマンドを学びました。これらの重要な Docker Compose コマンドをマスターすることで、コンテナオーケストレーションプロセスを効率化し、アプリケーションの円滑なデプロイと管理を確実に行うことができます。



