Docker cannot find docker-compose エラーの原因と解決方法を完全解説

Docker

Docker cannot find docker-compose エラーの原因と解決方法を完全解説

はじめに

Docker環境を構築していると、「docker-compose: command not found」というエラーに遭遇することがあります。このエラーは、Dockerをインストールしたのにdocker-composeが見つからないという状況です。特に初心者の方がこのエラーで困っていることが多いため、この記事では原因から解決方法まで詳しく説明します。

1. Docker cannot find docker-composeエラーの原因

1-1. docker-composeがインストールされていない

最も一般的な原因は、docker-composeがシステムにインストールされていないことです。Dockerと異なり、docker-composeは別途インストールが必要なツールです。Docker DesktopでインストールされたDockerには統合されていますが、Linuxサーバーなどでコマンドラインからインストールした場合は、docker-composeを別途インストールする必要があります。

1-2. PATHが正しく設定されていない

docker-composeはインストールされているものの、システムのPATH環境変数に含まれていない場合があります。これにより、コマンドが見つからないエラーが発生します。

1-3. docker-composeのバージョンが古い

古いバージョンのdocker-composeが入っている場合、互換性の問題が生じることがあります。

1-4. Docker DesktopでLinux コンテナーモードが正しく設定されていない

Windows や macOS で Docker Desktop を使用している場合、コンテナーモードの設定に問題があると、docker-compose が使用できないことがあります。

2. 解決手順(ステップバイステップ)

ステップ1: 現在の状況を確認する

まず、docker-compose が本当にインストールされていないか、または PATH に含まれていないかを確認しましょう。

docker-compose --version

このコマンドを実行して「command not found」が表示される場合は、docker-compose がインストールされていません。

ステップ2: Dockerがインストールされていることを確認

docker-compose をインストールする前に、Docker 自体がインストールされていることを確認してください。

docker --version

Docker がインストールされている場合はバージョンが表示されます。

ステップ3: docker-composeのインストール(Linux)

Linux環境(Ubuntu、CentOSなど)でのインストール手順です。

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

このコマンドで以下の処理が行われます:

  • GitHub から最新の docker-compose バイナリーをダウンロード
  • /usr/local/bin ディレクトリーに配置(PATH に含まれている場所)
  • 実行権限を付与
  • インストール確認

ステップ4: docker-composeのインストール(MacOS)

Docker Desktop for Mac を使用している場合、docker-compose は既に含まれています。もし見つからない場合は、Homebrew を使ってインストールできます。

brew install docker-compose

docker-compose --version

ステップ5: docker-composeのインストール(Windows)

Docker Desktop for Windows を使用している場合、docker-compose は既に含まれています。PowerShell で以下を実行して確認してください。

docker-compose --version

見つからない場合は、Docker Desktop を再インストールするか、以下の方法で手動インストールできます。

Invoke-WebRequest "https://github.com/docker/compose/releases/latest/download/docker-compose-Windows-x86_64.exe" -OutFile $env:ProgramFiles\Docker\docker-compose.exe

ステップ6: PATH の確認と設定

インストール後も見つからない場合は、PATH 環境変数を確認します。

echo $PATH

/usr/local/bin が含まれていることを確認してください。含まれていない場合は、.bashrc または .zshrc に以下を追加します。

export PATH="/usr/local/bin:$PATH"

その後、ターミナルを再起動するか、以下を実行します。

source ~/.bashrc  # または source ~/.zshrc

ステップ7: インストール確認

最後に、docker-compose が正しくインストールされたことを確認します。

docker-compose --version

バージョン情報が表示されれば、インストールは成功しています。

3. コード例とトラブルシューティング

例1: docker-compose.yml ファイルでの基本的な使用例

docker-compose が正常にインストールされた後、以下のような docker-compose.yml ファイルを作成できます。

version: '3.8'

services:
  web:
    image: nginx:latest
    container_name: my-nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html

  db:
    image: mysql:5.7
    container_name: my-mysql
    environment:
      MYSQL_ROOT_PASSWORD: password123
    ports:
      - "3306:3306"

このファイルで以下のコマンドを実行します。

# コンテナーの起動
docker-compose up -d

# ログの確認
docker-compose logs

# コンテナーの停止
docker-compose down

例2: 診断用スクリプト

インストールの問題を診断するスクリプトを作成しました。

#!/bin/bash

echo "=== Docker 環境診断 ==="

echo "\n1. Docker バージョン確認"
if command -v docker &> /dev/null; then
    docker --version
else
    echo "❌ Docker がインストールされていません"
fi

echo "\n2. docker-compose バージョン確認"
if command -v docker-compose &> /dev/null; then
    docker-compose --version
else
    echo "❌ docker-compose がインストールされていません"
fi

echo "\n3. PATH 環境変数確認"
echo $PATH

echo "\n4. /usr/local/bin 内容確認"
ls -la /usr/local/bin/docker-compose 2>/dev/null || echo "❌ /usr/local/bin に docker-compose がありません"

echo "\n5. 実行権限確認"
stat -c '%A' /usr/local/bin/docker-compose 2>/dev/null || echo "ファイルが存在しません"

このスクリプトを diagnosis.sh として保存し、以下で実行します。

chmod +x diagnosis.sh
./diagnosis.sh

4. よくある間違いと対策

間違い1: docker と docker-compose の違いを理解していない

よくある間違い: Docker をインストールすれば docker-compose も自動的に入ると思う

正しい理解: Docker と docker-compose は異なるツールです。特に Linux サーバーでは別途インストールが必要です。

対策: インストール後、必ず両方のバージョンを確認してください。

間違い2: インストール先のパスを間違えている

よくある間違い: docker-compose をランダムなディレクトリーにダウンロードしてしまう

正しい方法: システムの PATH に含まれているディレクトリーにインストールします。

# PATH に含まれるディレクトリーを確認
echo $PATH | tr ':' '\n'

# 一般的には /usr/local/bin が使われます
which docker  # docker の場所を確認

間違い3: 実行権限を付与していない

よくある間違い: chmod +x を実行忘れ

正しい手順:

sudo chmod +x /usr/local/bin/docker-compose

# 確認
ls -la /usr/local/bin/docker-compose

間違い4: 古いバージョンとの競合

よくある間違い: 古い docker-compose が別の場所に残っている

対策:

# 複数の docker-compose の場所を確認
which -a docker-compose

# または
locate docker-compose

# 見つかったら古いバージョンを削除
sudo rm /path/to/old/docker-compose

間truly 5: Docker デーモンが起動していない

よくある間違い: docker-compose はインストールされているが、Docker デーモンが起動していない

対策:

# Docker デーモンの状態確認
sudo systemctl status docker

# Docker デーモンの起動
sudo systemctl start docker

# 自動起動設定
sudo systemctl enable docker

5. トラブルシューティングチェックリスト

問題が解決しない場合は、以下のチェックリストを確認してください。

#!/bin/bash

echo "トラブルシューティングチェックリスト"
echo "===================================="

echo "\n✓ Docker がインストールされているか"
docker --version

echo "\n✓ docker-compose がインストールされているか"
docker-compose --version

echo "\n✓ docker-compose に実行権限があるか"
stat /usr/local/bin/docker-compose | grep -i access

echo "\n✓ Docker デーモンが起動しているか"
docker ps

echo "\n✓ ユーザーが docker グループに属しているか"
groups $USER | grep docker

echo "\n✓ docker-compose.yml ファイルが存在するか"
ls -la docker-compose.yml

echo "\n✓ YAML ファイルの文法が正しいか"
docker-compose config

6. まとめ

「Docker cannot find docker-compose」エラーは、初心者がよく遭遇するエラーです。しかし、適切な手順に従うことで簡単に解決できます。

解決方法のまとめ

  • 原因の特定: docker-compose –version でインストール状況を確認
  • インストール: Linux は公式サイトからバイナリーをダウンロード、macOS と Windows は Docker Desktop に含まれています
  • PATH の設定: /usr/local/bin など、PATH に含まれるディレクトリーにインストール
  • 実行権限: sudo chmod +x で実行権限を付与
  • 確認: docker-compose –version で動作確認

予防策

  • Docker と docker-compose は異なるツールであることを理解する
  • Linux と macOS、Windows でインストール方法が異なることを認識する
  • インストール後は必ずバージョンを確認する
  • 定期的に両方のツールをアップデートする

さらなる学習

docker-compose が正常に動作するようになったら、以下のステップに進むことをお勧めします。

  • docker-compose.yml ファイルの記述方法を学ぶ
  • 複数のサービスを管理する方法を理解する
  • 環境変数や .env ファイルの使い方を学ぶ
  • Docker Compose でのネットワーク設定を理解する

このガイドが皆さんの問題解決に役立てば幸いです。Docker と docker-compose を使いこなして、効率的な開発環境を構築してください。

タイトルとURLをコピーしました