落ちるコンテナのデバッグ
デプロイしたコンテナが起動直後に終了してしまう、あるいは動いているのに応答しない。原因をログと内部調査で特定したい。
手順
docker ps -a-aで停止中も含めて一覧する。STATUS列のExited (1)のような終了コードが最初の手がかり。Restartingを繰り返していないかも見る。docker logs --tail 100 myappコンテナの標準出力・標準エラーの末尾を読む。起動直後に落ちる系は、大抵ここに設定ミスや接続エラーの悲鳴が残っている。docker inspect myapp --format '{{.State.ExitCode}} {{.State.OOMKilled}}'終了コードとOOMKilledフラグを確認する。137でOOMKilledがtrueならメモリ上限による強制終了が原因。docker inspect myapp環境変数・マウント・ネットワーク設定の全容を確認する。「設定したつもりの環境変数が実は渡っていない」はここで発覚する。docker exec -it myapp sh動いてはいるが挙動が変な場合、中に入って設定ファイルや疎通を直接確かめる。即死する場合はdocker run --rm -it --entrypoint sh IMAGE名で殻だけ起動して調べる。docker events --since 30mdie・oom・restartなどのイベント履歴を時系列で見る。再起動ループの周期や、誰がkillしたのかの状況証拠が得られる。⚠
注意docker logsは再作成すると消える。原因究明が終わる前にコンテナをrm・再デプロイしてしまうと証拠隠滅になるため、まずログとinspect結果を確保してから作り直すこと。