Docker Desktopが起動しない・動かない
症状1:Docker Desktopが起動しない(Windows)
エラー:
Docker Desktop failed to start
原因:WSL 2がインストールされていない、または正しく設定されていない。
対処法:
- PowerShellを管理者として開く
- 以下のコマンドを実行:
wsl --install
wsl --set-default-version 2
PCを再起動してから、Docker Desktopを起動してください。
症状2:「Docker daemon is not running」エラー
エラー:
Cannot connect to the Docker daemon. Is the docker daemon running?
原因:Docker Desktopが起動していない。
対処法:Docker Desktopを起動してください。タスクトレイ(Windows)またはメニューバー(Mac)にDockerアイコンが表示されるまで待ちます。
コンテナが起動しない
症状1:ポートが既に使用されている
エラー:
Error: Bind for 0.0.0.0:3000 failed: port is already allocated
または
ERROR: for web Cannot start service web: driver failed programming external connectivity
原因:指定したポート(例:3000番)が既に他のアプリケーションで使われている。
対処法1:他のアプリケーションを停止する
# Windowsでポートを使用しているプロセスを確認
netstat -ano | findstr :3000
# Macでポートを使用しているプロセスを確認
lsof -i :3000
# プロセスを停止(プロセスIDを確認してから)
kill プロセスID
対処法2:docker-compose.ymlのポート番号を変更する
services:
web:
ports:
- "3001:3000" # ホスト側を3001に変更
変更後、http://localhost:3001でアクセスします。
症状2:イメージのビルドに失敗
エラー:
ERROR [internal] load metadata for docker.io/library/node:18
failed to solve with frontend dockerfile.v0
原因:ネットワークの問題でイメージをダウンロードできない。
対処法:
- インターネット接続を確認
- Docker Desktopを再起動
- 再度実行:
docker-compose up --build
症状3:コンテナがすぐに停止する
症状:docker-compose upすると起動するが、すぐに終了してしまう。
原因:DockerfileのCMDが正しくない、またはアプリケーションがエラーで終了している。
対処法:ログを確認します。
# ログを確認
docker-compose logs
# 特定のサービスのログ
docker-compose logs web
# リアルタイムでログを表示
docker-compose logs -f
環境変数・設定の問題
症状1:環境変数が読み込まれない
エラー:
Error: DATABASE_URL is not defined
原因:.envファイルがない、または正しく読み込まれていない。
対処法:
- .envファイルがプロジェクトのルートにあるか確認
- .env.exampleをコピーして.envを作成:
cp .env.example .env
- .envファイルに必要な値を設定
- コンテナを再起動:
docker-compose down
docker-compose up
症状2:.envの変更が反映されない
症状:.envファイルを変更したのに、アプリケーションが古い値を使っている。
原因:コンテナを再起動していない。
対処法:
docker-compose down
docker-compose up
または
docker-compose restart
データベースの問題
症状1:データベースに接続できない
エラー:
Error: connect ECONNREFUSED 127.0.0.1:5432
または
SQLSTATE[HY000] [2002] Connection refused
原因:データベースコンテナが起動していない、またはホスト名が間違っている。
対処法:
- データベースコンテナが起動しているか確認:
docker-compose ps
-
ホスト名を確認(
localhostではなく、docker-compose.ymlで定義したサービス名を使う):
# 間違い
DATABASE_URL=postgres://user:pass@localhost:5432/db
# 正しい(docker-compose.ymlのサービス名を使う)
DATABASE_URL=postgres://user:pass@db:5432/db
症状2:データベースのデータが消える
症状:docker-compose downすると、データベースに登録したデータが消えてしまう。
原因:volumesが設定されていない、または-vオプションでボリュームごと削除した。
対処法:
docker-compose.ymlにvolumesを追加:
services:
db:
image: postgres:15
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
⚠️ データを削除したくない場合
docker-compose down -vは使わないでください。-vオプションはボリュームも削除します。
停止だけなら:docker-compose stop
コンテナ削除のみ:docker-compose down(ボリュームは残る)
ファイル・ボリュームの問題
症状1:コードの変更が反映されない
症状:ファイルを編集しても、ブラウザで確認すると変更が反映されていない。
原因:volumesでファイルをマウントしていない。
対処法:
docker-compose.ymlにvolumesを追加:
services:
web:
volumes:
- .:/app # 現在のディレクトリをコンテナの/appにマウント
変更後、コンテナを再起動:
docker-compose down
docker-compose up
症状2:Permission denied エラー
エラー:
Permission denied: '/app/data'
原因:コンテナ内のユーザーに書き込み権限がない。
対処法(Linux/Mac):
# ディレクトリの権限を変更
chmod -R 777 ./data
または、Dockerfileで権限を設定:
RUN chown -R www-data:www-data /app/data
パフォーマンスの問題
症状1:コンテナの動作が遅い
症状:アプリケーションの動作が異常に遅い(特にWindows/Mac)。
原因:volumesでマウントしたファイルの読み書きが遅い。
対処法:
- Docker Desktopのリソース設定を増やす(Settings → Resources)
- CPUとメモリを増やす
- node_modulesなど大量のファイルは除外:
services:
web:
volumes:
- .:/app
- /app/node_modules # node_modulesはコンテナ内のものを使う
症状2:ビルドが遅い
症状:docker-compose up --buildが毎回時間がかかる。
原因:キャッシュが効いていない。
対処法:
Dockerfileの順序を最適化:
# 悪い例
COPY . .
RUN npm install
# 良い例(依存関係ファイルを先にコピー)
COPY package*.json ./
RUN npm install
COPY . .
その他の問題
症状1:ディスク容量不足
エラー:
no space left on device
原因:古いイメージやコンテナが溜まっている。
対処法:
# 使われていないコンテナ、イメージ、ネットワークを削除
docker system prune -a
# ボリュームも含めてすべて削除(注意:データが消えます)
docker system prune -a --volumes
症状2:コンテナに入れない
症状:docker-compose execでエラーになる。
原因:コンテナが起動していない、またはサービス名が間違っている。
対処法:
- コンテナが起動しているか確認:
docker-compose ps
- 正しいサービス名を使う(docker-compose.ymlで確認):
docker-compose exec web bash
症状3:「This site can't be reached」エラー
症状:ブラウザでhttp://localhost:3000にアクセスできない。
原因:ポート番号が間違っている、またはコンテナが起動していない。
対処法:
- コンテナが起動しているか確認:
docker-compose ps
- docker-compose.ymlでポート番号を確認
- 正しいURLでアクセス(例:http://localhost:8000)
困った時の基本手順
どうしても解決できない時は、以下の順番で試してください:
1. ログを確認
docker-compose logsでエラーメッセージを確認
2. 再起動
docker-compose restartで再起動
3. クリーンビルド
docker-compose downdocker-compose up --build
4. 完全リセット
docker-compose down -vdocker-compose up --build
5. Docker Desktop再起動
Docker Desktopを完全に終了して再起動
6. PC再起動
最終手段:PCを再起動
💡 エラーメッセージを検索する
エラーメッセージをそのままGoogleで検索すると、解決方法が見つかることが多いです。
例:「docker port is already allocated 解決」で検索