EasyBot

EASYBOT GUIDE

DockerコンテナがRestartingを繰り返す原因と調査方法

Dockerのコンテナが再起動ループになる時に、終了コード、ログ、起動コマンド、環境変数を安全に確認する方法を解説します。

DockerのRestartingは、コンテナ内のメインプロセスが終了し、restart policyによって再起動されている状態です。コンテナを削除する前に、終了理由とログを確認してください。

終了理由を確認

docker psだけでは最初のエラーを見逃すことがあります。終了コード、OOMKilledの有無、再起動回数を確認し、アプリケーションログと突き合わせます。

  • docker inspectでStateとExitCodeを確認する
  • docker logs --tailで直近の起動ログを見る
  • OOMKilledがtrueかメモリ使用量を確認する

起動コマンドとファイル

作業ディレクトリ、ENTRYPOINT、CMD、実行ファイルの権限が合っているか確認します。コンテナ内で必要なファイルがコピーされているかも調べます。

  1. DockerfileのWORKDIRとCOPY先を確認する
  2. 起動コマンドを同じイメージ内で試す
  3. 必要ファイルの名前と実行権限を確認する

設定と依存関係

必要な環境変数がない、依存関係が入っていない、起動処理が例外で終了するなどが一般的です。秘密値をログへ出さないようにしながら、変数の有無を確認します。

  • 必須環境変数の設定状態を確認する
  • 依存インストールが完了しているか見る
  • 起動直後の例外と終了コードを対応させる

再起動ループを止める

原因調査中にログが流れ続ける時は、必要なら対象コンテナだけ停止します。データボリューム付きの削除や全体pruneは避け、変更前の設定を保存します。

  • 停止対象のコンテナ名を再確認する
  • データボリュームの有無を確認する
  • 修正後に一度起動して安定状態を確認する