開発運用

Docker Composeの使い方

Docker Composeは、複数のDockerコンテナを定義し、管理するためのツールです。これにより、異なるサービスを持つアプリケーションを簡単に構成し、実行できます。特に、データベース、キャッシュ、ウェブサーバーなどを一括で起動したり、ネットワークを構成したりする際に非常に便利です。この記事では、Docker Composeのインストール方法と使用方法について、Ubuntu環境を中心に完全かつ包括的に説明します。

1. Docker Composeの概要

Docker Composeは、YAML形式で定義されたdocker-compose.ymlファイルを使って、複数のDockerコンテナを一括で操作できるツールです。これにより、異なるコンテナ間でネットワークを構築したり、ボリュームを共有したり、環境変数を設定したりすることが簡単になります。例えば、複数のサービスを含むアプリケーションを、簡単なコマンドで構築・起動・停止することができます。

2. Docker Composeのインストール

まず、UbuntuにDocker Composeをインストールする手順を説明します。

2.1 Dockerのインストール

Docker Composeを使用するためには、まずDocker本体をインストールする必要があります。以下の手順でDockerをインストールします。

  1. 必要なパッケージをインストールします。

    bash
    sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common
  2. Dockerの公式GPGキーを追加します。

    bash
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. Dockerのリポジトリを追加します。

    bash
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. Dockerをインストールします。

    bash
    sudo apt update sudo apt install docker-ce
  5. Dockerが正しくインストールされたか確認します。

    bash
    sudo docker --version

2.2 Docker Composeのインストール

Docker Composeをインストールするには、次の手順を行います。

  1. Docker Composeの最新バージョンを確認します。以下のコマンドで最新バージョンを取得できます。

    bash
    VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)
  2. Docker Composeをインストールします。

    bash
    sudo curl -L "https://github.com/docker/compose/releases/download/$VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  3. 実行権限を付与します。

    bash
    sudo chmod +x /usr/local/bin/docker-compose
  4. インストールが成功したかを確認します。

    bash
    docker-compose --version

3. Docker Composeの使い方

Docker Composeを使うと、複数のコンテナを簡単に管理できます。ここでは、簡単な例を使って、docker-compose.ymlファイルを作成し、複数のコンテナを起動する方法を説明します。

3.1 docker-compose.ymlファイルの作成

まず、プロジェクトディレクトリを作成し、その中にdocker-compose.ymlファイルを作成します。

bash
mkdir myproject cd myproject touch docker-compose.yml

以下の内容をdocker-compose.ymlに記述します。これは、nginxウェブサーバーとmysqlデータベースの2つのサービスを定義した例です。

yaml
version: '3' services: web: image: nginx:latest ports: - "8080:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example

このファイルは、次の2つのサービスを定義しています。

  • web: Nginxの最新のイメージを使って、コンテナのポート80をホストのポート8080にマッピングします。
  • db: MySQLの5.7バージョンのイメージを使い、MYSQL_ROOT_PASSWORDという環境変数を設定します。

3.2 サービスの起動

docker-compose.ymlファイルが準備できたら、次のコマンドでサービスを起動できます。

bash
sudo docker-compose up

このコマンドを実行すると、定義されたサービス(NginxとMySQL)がバックグラウンドで起動し、コンテナのログがターミナルに表示されます。バックグラウンドで実行したい場合は、-dオプションを使います。

bash
sudo docker-compose up -d

3.3 サービスの停止

サービスを停止するには、以下のコマンドを実行します。

bash
sudo docker-compose down

これにより、起動したコンテナがすべて停止し、ネットワークやボリュームも削除されます。

3.4 サービスの確認

起動中のコンテナを確認するには、以下のコマンドを使用します。

bash
sudo docker-compose ps

これにより、現在実行中のコンテナの状態を確認できます。

4. Docker Composeの高度な使い方

4.1 ボリュームの設定

コンテナ間でデータを永続化するためにボリュームを使用できます。以下のようにdocker-compose.ymlにボリュームを設定することができます。

yaml
version: '3' services: web: image: nginx:latest volumes: - ./html:/usr/share/nginx/html db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example volumes: - db_data:/var/lib/mysql volumes: db_data:

この設定では、MySQLのデータベースファイルをボリュームdb_dataに保存し、nginxのHTMLファイルをホスト側の./htmlディレクトリにマウントしています。

4.2 ネットワークの設定

Docker Composeは、サービス間での通信を簡単に行えるようにネットワークを設定できます。デフォルトでは、すべてのサービスは同じネットワークに配置されますが、複数のネットワークを使用することもできます。

yaml
version: '3' services: web: image: nginx:latest networks: - frontend db: image: mysql:5.7 networks: - backend networks: frontend: backend:

この設定では、nginxサービスはfrontendネットワークに、mysqlサービスはbackendネットワークに接続されます。異なるネットワークに配置されたサービス同士は、デフォルトでは通信できません。

5. トラブルシューティング

Docker Composeの使用中に問題が発生した場合、ログを確認することが重要です。

  • コンテナのログを見るには、次のコマンドを使用します。

    bash
    sudo docker-compose logs
  • 特定のサービスのログを確認するには、サービス名を指定します。

    bash
    sudo docker-compose logs web

6. まとめ

Docker Composeは、複数のコンテナを簡単に定義・起動・管理するための非常に強力なツールです。特に、開発環境や複雑なシス

Back to top button