Dockerコンテナが起動しないときの確認方法|docker ps・logsで原因を調べる手順
Dockerを使っていると、「コンテナを起動したはずなのに動いていない」「起動してもすぐ停止する」といったトラブルが起こることがあります。
この場合、いきなりコンテナを削除して作り直すより、現在の状態とログを確認することが先です。
特に最初に確認したいのは、docker ps -a と docker logs の2つです。コンテナが停止している理由がログに残っていれば、そこから原因をかなり絞り込めます。
まずDockerコンテナの状態を確認する
最初に、現在動いているコンテナだけでなく、停止しているコンテナも含めて確認します。
docker ps -a
docker psだけでは、現在起動中のコンテナしか表示されません。
そのため、「起動したはずなのに見つからない」という場合は、まず-aを付けて確認します。
表示結果のSTATUSを見ると、
Up 10 minutes
のように動作しているのか、
Exited (1) 20 seconds ago
のように停止しているのかを確認できます。
Exited (1)などが表示されている場合は、コンテナ自体は作成されていますが、内部のプロセスが終了しています。
コンテナがすぐ停止するときはdocker logsを確認する
コンテナが起動直後に停止する場合、次に確認したいのがログです。
docker logs コンテナ名
例えば、
docker logs web-app
のように実行します。
エラー内容によって、原因をさらに分類できます。
たとえば、
- 設定ファイルが見つからない
- 環境変数が設定されていない
- データベースへ接続できない
- ポートを使用できない
- 権限がない
- アプリケーション自体がエラーで終了した
といった問題が考えられます。
ログが長い場合は、最後の部分だけ確認する方法もあります。
docker logs --tail 100 コンテナ名
リアルタイムでログを確認したい場合は、
docker logs -f コンテナ名
を使います。
docker inspectでコンテナの設定を確認する
ログだけでは原因が分からない場合、コンテナの設定を確認します。
docker inspect コンテナ名
docker inspectでは、コンテナに設定されたネットワーク、ボリューム、環境変数、起動設定などを確認できます。
特に設定変更後から起動しなくなった場合は、以前と現在の設定に違いがないか確認すると原因を見つけやすくなります。
ポートの設定を確認する
WebサーバーやアプリケーションをDockerで動かしている場合、ポート設定も確認します。
docker ps -a
または、
docker port コンテナ名
でポートの割り当てを確認できます。
例えば、
0.0.0.0:8080 -> 80/tcp
と表示された場合、ホスト側の8080番ポートからコンテナ内の80番ポートへ接続する設定です。
ただし、別のサービスがすでに同じホスト側ポートを使用していると、コンテナを起動できないことがあります。
Linuxサーバーなら、次のコマンドで使用中のポートを確認できます。
sudo ss -lntp
ポート関連のエラーがログに出ている場合は、既存サービスとの競合を確認してください。
環境変数が正しく設定されているか確認する
Dockerコンテナでは、環境変数を使ってデータベースの接続先やユーザー名、パスワードなどを設定することがあります。
例えば、
DB_HOST=db
DB_USER=example
DB_PASSWORD=********
のような設定です。
必要な環境変数が設定されていなかったり、値を間違えたりすると、アプリケーションが起動直後に終了する場合があります。
設定を確認するときは、
docker inspect コンテナ名
などでコンテナの設定を確認できます。
ただし、パスワードやAPIキーなどの機密情報をログや公開ページに貼り付けないよう注意してください。
Docker Composeを使っている場合
Docker Composeで複数のコンテナを管理している場合は、個別のコンテナだけでなく、サービス全体の状態を確認します。
docker compose ps
停止しているサービスがあれば、
docker compose logs
でログを確認できます。
特定のサービスだけ確認する場合は、
docker compose logs web
のように指定します。
例えば、
Web → アプリケーション → データベース
という構成なら、Webコンテナだけでなくデータベース側も正常に起動しているか確認する必要があります。
アプリケーションがデータベースへ接続できず、結果としてアプリ側のコンテナが停止しているケースもあります。
ボリュームやファイルの問題も確認する
Dockerでは、コンテナとは別にデータを保存するためにボリュームを使用することがあります。
docker volume ls
でボリュームの一覧を確認できます。
設定ファイルやアプリケーションのデータをホスト側からマウントしている場合は、指定したパスが正しいかも確認してください。
特に、
- ファイル名を変更した
- ディレクトリを移動した
- 権限を変更した
.envの場所を変更した
といった変更をした後に起動できなくなった場合は、マウント設定やファイルパスを確認する価値があります。
イメージに問題がないか確認する
コンテナはDockerイメージをもとに作成されます。
使用しているイメージを確認するには、
docker images
を使います。
Dockerfileを変更したのに古いイメージを使っている場合など、想定していた内容と実際のコンテナに違いが発生することがあります。
Composeを使用している場合も、設定を変更した後は「設定変更が実際のコンテナに反映されているか」を確認してください。
コンテナを削除する前に確認したいこと
エラーが出たからといって、すぐに
docker rm
や
docker compose down
を実行するのはおすすめできません。
コンテナを作り直すことで問題が解決する場合もありますが、原因を確認する前に削除すると、調査に必要な情報を失う可能性があります。
まず、
docker ps -a
docker logs コンテナ名
docker inspect コンテナ名
で状態と設定を確認しましょう。
データをボリュームに保存している場合でも、削除操作の内容によってはデータに影響することがあります。特に本番環境では、削除前に保存データの場所を確認してください。
Dockerコンテナが起動しないときの確認順
原因が分からない場合は、次の順番で確認すると整理しやすくなります。
1.コンテナの状態を確認
docker ps -a
2.終了コードを確認
Exited (1)などのSTATUSを確認します。
3.ログを確認
docker logs コンテナ名
4.ポートを確認
docker port コンテナ名
sudo ss -lntp
5.環境変数・設定を確認
docker inspect コンテナ名
6.ボリュームやファイルパスを確認
設定ファイルやマウント先に問題がないか確認します。
7.Composeなら関連サービスも確認
docker compose ps
docker compose logs
この順番で調べると、「何となく再起動を繰り返す」状態から、原因を一つずつ切り分けられます。
Dockerコンテナのトラブルでやってはいけないこと
原因が分からないまま、次のような操作を繰り返すのは避けたほうが安全です。
- コンテナを何度も再作成する
- ログを確認せず削除する
docker system pruneを無条件で実行する- 本番環境で設定を一気に変更する
- パスワードやAPIキーをログに公開する
特にprune系のコマンドは、不要なコンテナやイメージなどを削除するため、使い方によっては必要なデータまで失う可能性があります。
「とりあえず全部消して作り直す」よりも、まず状態とログを確認することがDockerトラブル解決の基本です。
既存のDocker環境を確認するときのポイント
Dockerはコンテナだけを見ていると、問題の原因を見落とすことがあります。
実際には、
Dockerイメージ → コンテナ → ポート → ネットワーク → ボリューム → アプリケーション → データベース
のように複数の要素が関係しています。
例えばWebアプリケーションのコンテナが起動していても、データベースへ接続できなければ正常に動作しないことがあります。
反対に、コンテナ自体は正常でも、ホスト側のポート設定やNginxなどのリバースプロキシ側に問題があると、ブラウザからアクセスできません。
そのため「コンテナが起動しているか」と「Webサイトが表示できるか」は分けて考えることが重要です。
まとめ
Dockerコンテナが起動しないときは、いきなり削除して作り直すのではなく、現在の状態とログを確認することが最初のステップです。
まずは、
docker ps -a
で状態を確認し、
docker logs コンテナ名
でエラーを調べます。
それでも原因が分からなければ、ポート、環境変数、ボリューム、イメージ、Docker Composeの関連サービスへと確認範囲を広げていきます。
Dockerのトラブルは、すべてを一度に直そうとするよりも、**「コンテナ自体の問題なのか」「設定の問題なのか」「接続先の問題なのか」**を順番に切り分けるほうが解決しやすくなります。
[FAQ]
Dockerコンテナが起動しているか確認するには?
docker ps
で現在起動しているコンテナを確認できます。
停止したコンテナも含めて確認したい場合は、
docker ps -a
を使用します。
Dockerコンテナが起動後すぐ停止する原因は?
アプリケーションのエラー、環境変数の不足、設定ファイルの問題、データベースへの接続失敗、権限やポート設定など、さまざまな原因があります。
まずdocker logs コンテナ名でエラー内容を確認するのが基本です。
docker logsで何も表示されない場合は?
アプリケーション側がログを出力していない、起動処理より前に終了しているなどの可能性があります。
docker inspectで起動コマンドや設定を確認し、イメージやDockerfile側にも問題がないか確認します。
Dockerコンテナを削除して作り直せば直りますか?
設定の問題などで改善する場合はありますが、原因を確認せずに削除するのはおすすめできません。
特にボリュームに保存されたデータを扱っている場合は、削除操作による影響を確認してから作業してください。
