症状

docker exec コマンド実行時に Error: No such container: コンテナ名 が表示される。

結論:まずこれを確認

  1. docker ps -a でコンテナの存在と状態を確認する
  2. コンテナ名・IDのタイプミスがないか確認する
  3. コンテナが Exited 状態なら docker start で起動する

トラブルシューティングフロー

    flowchart TD
    A[No such container エラー] --> B{docker ps -a で<br>コンテナが表示される?}
    B -->|No| C[コンテナが存在しない]
    B -->|Yes| D{STATUSは<br>Up?}
    C --> C1[コンテナ名/IDを再確認]
    C1 --> C2[docker run で作成が必要]
    D -->|No| E[コンテナが停止中]
    D -->|Yes| F{コンテナ名/IDは<br>正確?}
    E --> E1[docker start で起動]
    F -->|No| G[名前/IDを修正して再実行]
    F -->|Yes| H[Docker デーモン再起動を検討]
  

よくある原因

  • コンテナ名・IDのタイプミス - 大文字小文字、ハイフン、アンダースコアの違い
  • コンテナが停止している - Exited 状態のコンテナには exec できない
  • コンテナが削除されている - docker rm--rm オプションで削除済み
  • 別の Docker コンテキストを参照 - Docker Desktop と CLI で異なる環境を見ている
  • コンテナ名の重複回避で別名になっている - docker-compose が自動でサフィックスを付与
  • docker-compose のプロジェクト名が異なる - ディレクトリ名がプレフィックスになる

確認手順

ステップ1: 全コンテナの一覧を確認する

    docker ps -a
  

🔍 チェックポイント: 対象のコンテナが一覧に表示されるか確認する。表示されなければコンテナは存在しない。

ステップ2: コンテナの状態を確認する

    docker ps -a --filter "name=対象のコンテナ名"
  

🔍 チェックポイント: STATUS 列が Up で始まっていれば起動中。Exited なら停止中。

ステップ3: 停止中のコンテナを起動する

    docker start コンテナ名またはID
  

🔍 チェックポイント: エラーなく完了すれば、再度 docker exec を実行できる。

ステップ4: コンテナ名を正確に取得する

    docker ps -a --format "{{.Names}}"
  

🔍 チェックポイント: 出力された名前をコピーして docker exec に使用する。

ステップ5: コンテナIDで実行する

    # コンテナIDの先頭数文字でも指定可能
docker exec -it abc123 /bin/bash
  

🔍 チェックポイント: コンテナ名ではなくIDで指定すると、名前の問題を切り分けられる。

ステップ6: docker-compose 環境の場合

    # docker-compose が付与した名前を確認
docker-compose ps

# docker-compose 経由で exec する
docker-compose exec サービス名 /bin/bash
  

🔍 チェックポイント: docker-compose exec はサービス名(コンテナ名ではない)を指定する。

NG行動(やってはいけないこと)

  • 停止中のコンテナに exec を繰り返す - 状態を確認せず同じコマンドを連打しても解決しない
  • コンテナ名を目視で入力する - コピー&ペーストで正確な名前を使用する
  • docker rm -f で削除して作り直す - データボリュームがない場合、データが消失する
  • sudo なしで実行してエラーを無視する - 権限不足の場合は別のエラーメッセージになる

よくある質問(FAQ)

Q1: コンテナIDの一部だけで指定できる?

A: 可能。他のコンテナと区別できる長さがあれば、先頭3〜4文字程度で指定できる。docker exec -it abc /bin/bash のように使用する。

Q2: docker-compose up したのにコンテナが見つからない

A: docker-compose ps でサービス名とコンテナ名を確認する。コンテナ名は ディレクトリ名_サービス名_1 の形式になることが多い。docker-compose exec サービス名 コマンド を使用するとサービス名で指定できる。

Q3: –rm オプションで起動したコンテナはどうなる?

A: --rm オプション付きで起動したコンテナは、停止時に自動削除される。docker ps -a にも表示されない。再度 docker run で起動が必要。

関連するエラー・症状

  • (関連記事準備中)
  • (関連記事準備中)
  • (関連記事準備中)

解決しない場合

公式ドキュメント

確認すべきログ

    # Docker デーモンのログ(Linux)
journalctl -u docker.service

# Docker Desktop のログ(macOS/Windows)
# Docker Desktop の Troubleshoot > Get support から確認
  

次に調べるキーワード

  • docker container inspect
  • docker logs コンテナ名
  • docker events