コンテナ管理のための必須 Docker Compose コマンド

DockerBeginner
オンラインで実践に進む

はじめに

このチュートリアルは、コンテナの管理に必要な 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:

この例では、webdb の 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:

この例では、frontendbackenddb の 3 つのサービスがあります。frontend サービスは backend サービスに依存し、backend サービスは db サービスに依存します。これにより、アプリケーションは正しい順序でデプロイされます。

Docker Compose を使用すると、マルチティアアプリケーションのデプロイとスケーリングを簡単に管理できます。コンテナベースの開発とデプロイのための強力なツールです。

まとめ

このチュートリアルでは、Docker Compose の基本的な使い方から、実用的な例まで、コンテナ管理のための重要な Docker Compose コマンドを学びました。これらの重要な Docker Compose コマンドをマスターすることで、コンテナオーケストレーションプロセスを効率化し、アプリケーションの円滑なデプロイと管理を確実に行うことができます。