メインコンテンツまでスキップ

第06章:ログを見る(logs)=トラブル対応の第一歩🪵👀✨

「動かない😵」「すぐ落ちる💥」「なんか変🤔」 そんなとき 最初に見るべきはログ です!ログは“現場の目撃証言”みたいなもの🕵️‍♂️✨


1) まず超重要:Dockerの「ログ」って何?📣​

log_architecture

Dockerで見られるログは、基本 コンテナ内プロセスが STDOUT / STDERR に出した文字 です🧾 つまり、Nodeなら console.log() や console.error() がそのままログになります😊 (Dockerはその出力を集めて、docker logs で見せてくれる感じ)🐳📦 (Docker Documentation)


2) まず覚える“最短3コマンド”⚡​

troubleshooting_steps

困ったら、この順でOKです👇😄

  1. コンテナが生きてる? docker ps 👀
  2. 落ちてても一覧にいる?(落ちた子はこっち) docker ps -a 📋
  3. ログを見る! docker logs <コンテナ名> 🪵

docker logs は docker container logs の別名(エイリアス)だよ👌 (Docker Documentation)


3) ハンズオン①:ログが流れ続ける“練習用コンテナ”を作る🏃‍♂️🪵​

まずはログが分かりやすい子を起動します🎬

docker run --name log-demo -d busybox sh -c 'i=0; while true; do echo "hello $i"; i=$((i+1)); sleep 1; done'

✅ 3-1. ログをそのまま見る​

docker logs log-demo

✅ 3-2. “最後の20行だけ”見る(超よく使う!)🔥​

docker logs --tail 20 log-demo

✅ 3-3. 追尾する(流れ続けるのを見る)👀📡​

tail_follow

docker logs -f log-demo

止めたいときは Ctrl + C(コンテナは止まらないよ!)🧯✨ --follow/-f と --tail は、公式でも定番の組み合わせです👌 (Docker Documentation)


4) ハンズオン②:すぐ落ちるコンテナを“ログで救出”する🚑💥​

crash_investigation

「起動した瞬間落ちる😵」をわざと作って、ログで原因を掴みます!

2026-02時点のNodeは、v25がCurrent / v24がActive LTS です(学習ではLTSを選ぶと安心寄り)🧠✨ (nodejs.org)

docker run --name crash-demo node:24 node -e "console.log('start'); throw new Error('boom!')"

すぐ終了するので、まず存在確認👇

docker ps -a

そしてログ👇

docker logs crash-demo

💡ここで出る Error: boom! とスタックトレースが “犯人の足跡” 🐾 「どこで落ちたか」「何が原因っぽいか」をまず拾えます😊


5) logsの“神オプション”まとめ🧙‍♂️✨(この章の主役)​

time_options

5-1. タイムスタンプを付ける ⏱️​

docker logs -t log-demo

-t/--timestamps は RFC3339Nano 形式の時刻が付くよ📅✨ (Docker Documentation)

5-2. “◯分前から”だけ見る 🕒​

docker logs --since 10m log-demo

--since は RFC3339 / UNIX time / 期間(例: 1m30s, 3h) などで指定できます👍 (Docker Documentation)

5-3. “この時刻まで”だけ見る(地味に便利)🧊​

docker logs --until 2m log-demo

--until も --since と同じノリで使えます👌 (Docker Documentation)

5-4. 「詳細も出して」🧾(上級者の入口)​

docker logs --details log-demo

--details は、コンテナ起動時に --log-opt で渡した追加属性(環境変数やラベル等)を出せます📌 (Docker Documentation)


6) “ログを探す”小技:検索してノイズを減らす🔎🧹​

grep_filter

6-1. WSLターミナル(grep)🐧​

docker logs --tail 300 log-demo 2>&1 | grep -E "error|warn|exception|fail"

6-2. PowerShell(Select-String)🪟​

docker logs --tail 300 log-demo 2>&1 | Select-String -Pattern "error|warn|exception|fail"

💡2>&1 は 標準エラーも一緒に 検索したいときの定番です👍✨


7) VS Codeでログを見る(CLIが苦手でもOK)🧑‍💻👀​

vscode_logs

VS CodeのDocker拡張から、コンテナを右クリックして “View Logs” でログ表示できます✨ (ターミナルに出るので、そのままコピペしてAIに投げられるのも強い🤖) (Visual Studio Code)


8) 「ログが見れない😵」ときのチェック✅​

8-1. コンテナが消えてる​

--rm 付きで起動してた / 片付けで rm した → もうログも消えてる ことがあります🧹💨 (消す前にログ確保が基本!)

8-2. ログドライバの都合​

docker logs が読めるのは(Community Engineだと)主に local / json-file / journald のときです📌 それ以外のドライバだと、外部のログ基盤側で見る必要が出ます👀🌩️ (Docker ドキュメント)


9) (予告)Composeになったら“まとめてログ”を見る📦📦📦🪵​

後半でAPI+DBをComposeにしたら、ログはこれが強い💪✨

docker compose logs --tail 100 -f

--follow, --tail, --since, --until, --timestamps などが使えます👌 (Docker Documentation)


10) AI活用テンプレ(そのまま貼ってOK)🤖✨​

10-1. まず原因候補と次の確認手順を出してもらう🧠​

以下は docker logs の出力です。
1) 何が起きているかを1〜2行で要約
2) 原因候補を優先度順に3つ
3) それぞれを確認する具体コマンド(dockerコマンド中心)を提示
4) 直す方針(最小修正)を提案
---
(ここにログを貼る)

10-2. Node/TSっぽいエラーのとき(特に効く)⚡​

このログはNode.js/TypeScriptのAPIです。
スタックトレースから「最初に疑うべきファイル/行」と「ありがちな原因」を教えて。
ついでに、再現・切り分けの手順を3ステップで。
---
(ログ)

10-3. “落ちたコンテナ”救出用🛟​

コンテナが起動直後に終了します。
docker ps -a と docker logs の結果を貼るので、
次に見るべきポイント(設定/環境変数/ポート/依存)を優先順位つきで教えて。
---
(出力を貼る)

11) ミニ演習(手を動かすやつ)🏋️‍♂️✨​

演習A:追尾できる?​

  1. log-demo を -f で追尾👀
  2. 別ターミナルで docker stop log-demo してみる🛑
  3. 追尾側に何が出るか観察👁️✨(“いつ止まったか”が分かる!)

演習B:時間で絞れる?​

  1. log-demo をしばらく動かす⏳
  2. --since 30s で直近だけ表示🕒
  3. -t も付けて「時刻と行数の関係」を見る📅

演習C:落ちた原因を一言で言える?​

  1. crash-demo のログを見て🪵
  2. 「何が原因?」を 1行で 書く✍️
  3. AIに貼って「直し方」を聞く🤖✨

12) チェック問題(サクッと)📝✅​

  1. docker logs が見ているのは、基本どの出力?(2つ)
  2. 末尾50行だけ見たいときのオプションは?
  3. ログを追尾してるだけでコンテナは止まる?止まらない?
  4. --since 10m の “10m” は何を意味する?
  5. Composeで複数サービスのログをまとめて見るコマンドは?

必要なら、次の章(execで中に入る🔦)へ行く前に、「Todo APIで“良いログの出し方”」(info/warn/error、リクエストID、1行JSONログの雰囲気)もこの第6章の続きとして追記できます😄🧩✨