はじめに
Docker Compose は、マルチコンテナアプリケーションのデプロイメントと管理を効率化しようとする開発者や DevOps プロフェッショナルにとって不可欠なツールです。この包括的なチュートリアルでは、さまざまな環境で Docker Compose を効果的に使用するための基本的な概念、構成戦略、実践的な実装技術を探ります。
Docker Compose 入門
Docker Compose とは?
Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するための強力なツールです。開発者は YAML ファイルを使用してアプリケーションサービス、ネットワーク、ボリュームを構成することで、コンテナオーケストレーションと管理を簡素化できます。
Docker Compose の主要な概念
graph TD
A[Docker Compose] --> B[サービス構成]
A --> C[マルチコンテナ管理]
A --> D[宣言型のアプリケーション設定]
| 機能 | 説明 |
|---|---|
| サービス定義 | docker-compose.yml でアプリケーションコンポーネントを定義 |
| 環境設定 | さまざまな環境を簡単に管理 |
| スケーラビリティ | サービスの水平スケーリングを簡単に行う |
Ubuntu 22.04 への基本的なインストール
## パッケージインデックスを更新
sudo apt update
## 依存関係をインストール
sudo apt install curl docker-compose -y
## インストールを確認
docker-compose --version
Docker Compose のサンプル構成
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: mysecretpassword
この例は、ウェブサーバーと PostgreSQL データベースという 2 つの相互接続されたサービスを持つ基本的な Docker Compose 設定を示しています。これは、マルチコンテナアプリケーションのためのコンテナオーケストレーションの原則を示しています。
Docker Compose の構成
Docker Compose ファイルの構造
Docker Compose の構成は、通常 docker-compose.yml という YAML ファイルで定義されます。このファイルは、マルチコンテナアプリケーションのサービス、ネットワーク、ボリュームを記述する構造化された構文に従います。
graph TD
A[docker-compose.yml] --> B[バージョン]
A --> C[サービス]
A --> D[ネットワーク]
A --> E[ボリューム]
構成構文とバージョン
| キーコンポーネント | 説明 |
|---|---|
| バージョン | Docker Compose ファイルのフォーマットを指定 |
| サービス | コンテナとその構成を定義 |
| ネットワーク | コンテナのネットワークを構成 |
| ボリューム | データの永続性を管理 |
完全な Docker Compose 構成例
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
networks:
- web_network
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- web_network
networks:
web_network:
driver: bridge
volumes:
postgres_data:
構成の検証
## Docker Compose ファイルの構文を検証
docker-compose config
## コンテナを起動せずに構成をチェック
docker-compose config --quiet
Docker Compose アプリケーションのデプロイ
デプロイワークフロー
Docker Compose は、シンプルなコマンドライン操作でマルチコンテナアプリケーションをデプロイするための効率的な方法を提供します。
graph TD
A[docker-compose.yml を準備] --> B[サービスのビルド]
B --> C[コンテナの起動]
C --> D[アプリケーションの管理]
基本的なデプロイコマンド
| コマンド | 機能 |
|---|---|
| docker-compose up | 全てのサービスを起動 |
| docker-compose up -d | サービスをデタッチモードで起動 |
| docker-compose down | コンテナを停止および削除 |
| docker-compose scale | 特定のサービスをスケール |
デプロイ例
## プロジェクトディレクトリに移動
cd /path/to/project
## サービスをビルドして起動
docker-compose up -d
## 実行中のコンテナを表示
docker-compose ps
## サービスのログを確認
docker-compose logs web
## 特定のサービスをスケールアップ
docker-compose up -d --scale web=3
高度なデプロイ戦略
version: "3.8"
services:
web:
image: myapp:latest
deploy:
replicas: 3
restart_policy:
condition: on-failure
networks:
- application_network
networks:
application_network:
driver: overlay
サービス管理コマンド
## 特定のサービスを停止
docker-compose stop web
## サービスを再起動
docker-compose restart
## 全てのコンテナを削除
docker-compose down --rmi all
まとめ
Docker Compose を習得することで、開発者は複雑なアプリケーションアーキテクチャを簡素化し、デプロイワークフローを強化し、スケーラブルで再現可能なコンテナ環境を作成できます。このチュートリアルは、Docker の強力なオーケストレーションツールを使用して、サービス構成、ネットワーク管理、宣言的なアプリケーション設定を理解するための堅実な基盤を提供します。



