EASYBOT GUIDE
DockerコンテナがRestartingを繰り返す原因と調査方法
Dockerのコンテナが再起動ループになる時に、終了コード、ログ、起動コマンド、環境変数を安全に確認する方法を解説します。
DockerのRestartingは、コンテナ内のメインプロセスが終了し、restart policyによって再起動されている状態です。コンテナを削除する前に、終了理由とログを確認してください。
終了理由を確認
docker psだけでは最初のエラーを見逃すことがあります。終了コード、OOMKilledの有無、再起動回数を確認し、アプリケーションログと突き合わせます。
- docker inspectでStateとExitCodeを確認する
- docker logs --tailで直近の起動ログを見る
- OOMKilledがtrueかメモリ使用量を確認する
起動コマンドとファイル
作業ディレクトリ、ENTRYPOINT、CMD、実行ファイルの権限が合っているか確認します。コンテナ内で必要なファイルがコピーされているかも調べます。
- DockerfileのWORKDIRとCOPY先を確認する
- 起動コマンドを同じイメージ内で試す
- 必要ファイルの名前と実行権限を確認する
設定と依存関係
必要な環境変数がない、依存関係が入っていない、起動処理が例外で終了するなどが一般的です。秘密値をログへ出さないようにしながら、変数の有無を確認します。
- 必須環境変数の設定状態を確認する
- 依存インストールが完了しているか見る
- 起動直後の例外と終了コードを対応させる
再起動ループを止める
原因調査中にログが流れ続ける時は、必要なら対象コンテナだけ停止します。データボリューム付きの削除や全体pruneは避け、変更前の設定を保存します。
- 停止対象のコンテナ名を再確認する
- データボリュームの有無を確認する
- 修正後に一度起動して安定状態を確認する