Docker

Docker Compose v2 のインストールと活用ガイド – 手順・ベストプラクティス

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

1️⃣ Compose プラグインの取得と配置

1.1 Docker Desktop を利用している場合 (Windows / macOS)

Docker Desktop(現在の安定版)には Compose プラグインが標準で同梱 されています。追加作業は不要です。

OS 確認コマンド
Windows docker compose version
macOS docker compose version

Docker Desktop のバージョンが古い場合は、アプリ内の「Settings → General」から自動更新を有効にしてください。


1.2 Linux(または Docker Engine 単体)で手動インストールする場合

Linux 環境ではプラグインを 公式 GitHub リリース から取得し、CLI が検索できるディレクトリへ配置します。

項目 推奨パス例
デフォルト (多くのディストリビューション) /usr/local/lib/docker/cli-plugins
ユーザー単位でインストールしたいとき $HOME/.docker/cli-plugins

ポイント:プラグインは実行権限が付与された状態で配置し、ディレクトリが PATH に含まれているか確認してください。

手順(Linux 共通)

macOS(Homebrew がインストール済みの場合)

Windows(PowerShell)

  1. Docker Desktop を利用しない場合は、以下の手順でプラグインを取得。
  2. バイナリは C:\Program Files\Docker\cli-plugins に配置。

注意:Windows 環境で PowerShell の実行ポリシーが制限されている場合は、Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 等で緩和してください。


2️⃣ version: フィールドの扱いと推奨設定

2.1 現在の Compose Specification の位置付け

Compose Specification(compose-spec.io)は バージョン非依存 を目指した設計です。そのため、docker-compose.ymlversion: キーを記述しなくても構文エラーにならないように実装されています。

重要version: を省略すると「最新の仕様でパース」されますが、将来的に 新しいフィールドや制約が追加された場合 は、既存ファイルが意図しない動作をする可能性があります。
したがって 「必ず互換性が保たれる」 と断言できませんが、現在のベストプラクティスとしては省略して問題ありません

2.2 推奨記述例

  • 利点
  • ファイルがシンプルになる。
  • docker compose config 実行時に自動で最新スキーマが適用され、余計なバリデーションエラーを回避できる。

  • 留意点

  • 大規模プロジェクトや長期間運用するシステムでは、使用している Compose Spec のバージョンを明示的に管理(例:CI パイプラインで compose spec validate)すると安全です。

3️⃣ docker compose と従来の docker‑compose の主な違い

項目 従来 (docker‑compose) 現行 (docker compose)
実行形式 独立したバイナリ Docker CLI に組み込まれたサブコマンド
設定ファイルのデフォルト名 docker-compose.yml 同上
バージョン管理 version: が必須(過去は必須) 任意(仕様非依存)
拡張機能 プラグイン方式が限定的 profiles, extensions などの新機能をサポート
コマンドヘルプ docker-compose --help docker compose --help

ポイント:CLI が一本化されたことで、スクリプトや CI/CD の記述が統一され、エラーメッセージも Docker Engine と同様の形式になるためデバッグが容易です。


4️⃣ v2 固有機能と実践的な活用例

4.1 profiles(サービス群の切り替え)

  • 開発モードdocker compose --profile dev up -d
  • 本番モードdocker compose --profile prod,dev up -d(複数指定可)

4.2 extensions(実験的機能の宣言)

Compose Specification が提供する拡張は、現行安定版ではオプション扱いです。以下は 実験的に利用できる例 であり、必須ではありません。

注意extensions:compose-spec: {} とだけ書くと、現在の安定版 Docker Engine では無視されます。実際に使う拡張機能は公式ドキュメントで対応状況を確認してください。

4.3 healthcheck の記述例

depends_on: と併用すると、依存サービスは 健康状態が “healthy” になるまで待機します。

4.4 シークレット管理(Docker Swarm / Kubernetes 向け)

  • 作成手順(Swarm)
    bash
    echo "s3cr3t" | docker secret create db_password -

4.5 マルチステージ Dockerfile の例(Flask アプリ)

マルチステージ構成により ビルドツールが最終イメージに残らない ため、サイズ削減とセキュリティ向上が同時に実現できます。


5️⃣ 実践チュートリアル:Flask + Redis のマルチコンテナ構成

5.1 ディレクトリ構成

app/requirements.txt

app/main.py(先ほどと同様)

docker-compose.yml(profiles と healthcheck を活用)

5.2 起動手順

ブラウザで http://localhost:8080/ にアクセスすると、訪問回数がインクリメントされて表示されます。


6️⃣ トラブルシューティングとベストプラクティス

症状 確認ポイント 解決策
docker compose: command not found プラグイン配置先が CLI の検索パスに含まれているか - Linux:echo $PATH \| grep cli-plugins
- Windows:環境変数 PathC:\Program Files\Docker\cli-plugins があるか
コンテナ起動時に ネットワーク名が競合 docker network ls で同名ネットワークが複数存在しないか networks: セクションでプロジェクト変数 ${COMPOSE_PROJECT_NAME} を使用して名前空間を分離
depends_on が期待通りに待機しない 対象サービスの healthcheck が正しく定義されているか docker compose logs <service> でヘルスチェック結果を確認、必要なら interval/retries を調整
docker compose config の出力に不明なフィールドがある extensions: に実験的キーを書いていないか 実験的拡張は 公式のサポート情報 と照らし合わせ、不要なら削除

追加ベストプラクティス

  1. CI/CD パイプラインでバージョン固定
    docker compose version の出力を CI のビルドログに残すことで、環境差異による不具合を早期検知できます。

  2. Compose ファイルは YAML Linter で事前検証
    bash
    docker run --rm -i mikefarah/yq yq eval '.' - < docker-compose.yml

  3. 環境変数の管理は .env ファイルか Docker Secret を推奨。平文でパスワードを書かないように注意。


7️⃣ まとめ(要点)

  • インストール
  • Docker Desktop → 何もしなくても利用可能。
  • Linux・Windows の手動インストールは、公式リリースからバイナリを取得し OS に合わせたプラグインディレクトリへ配置するだけで完了。

  • version: フィールド

  • 現行の Compose Specification は非依存設計なので省略可能。
  • 将来的な仕様変更に備えて、長期運用プロジェクトでは CI に compose spec validate を組み込むと安全。

  • CLI 統合と新機能

  • docker compose が標準化されたことでスクリプトがシンプルになる。
  • profiles, healthcheck, extensions(実験的)など v2 固有の拡張は、開発/本番環境の切り替えやコンテナ健全性管理に有効。

  • 実践例:Flask + Redis のマルチコンテナ構成は、数ファイルで完結し docker compose up -d だけで起動できる。

  • profiles により開発と本番を同一 Compose ファイルで管理。
  • healthcheckdepends_on の組み合わせでサービス間の起動順序を保証。

  • トラブル対策:プラグイン配置、ネットワーク命名、ヘルスチェック設定、docker compose config 出力確認を行えば多くの問題は解決できる。

これらの手順とベストプラクティスに従うことで、Docker Compose v2 を 安全・迅速かつ拡張性高く 導入し、マルチコンテナアプリケーションの開発・運用を円滑に進めることができます。

スポンサードリンク

-Docker
-, , , , , , ,