docker logs
『docker logs』は、実行中または停止済みのコンテナが標準出力(stdout)・標準エラー出力(stderr)に書き出したログを確認するコマンドです。ログのリアルタイム追跡・タイムスタンプ付き表示・出力行数の絞り込みなど、デバッグやモニタリングに役立つオプションが用意されています。
構文
# -----------------------------------------------
# 基本構文
# -----------------------------------------------
# docker logs {コンテナID または コンテナ名}
# → 対象コンテナのログを全件表示します
# 例: docker logs evangelion-app
# -----------------------------------------------
# 主なオプション
# -----------------------------------------------
# docker logs --follow {コンテナ名}
# → ログをリアルタイムで追跡します(tail -f に相当)
# 例: docker logs --follow evangelion-app
# docker logs --timestamps {コンテナ名}
# → 各ログ行の先頭に RFC3339Nano 形式のタイムスタンプを付加します
# 例: docker logs --timestamps evangelion-app
# docker logs --tail {行数} {コンテナ名}
# → 末尾から指定した行数だけ表示します
# 例: docker logs --tail 20 evangelion-app
# docker logs --since {時刻または相対時間} {コンテナ名}
# → 指定した時刻以降のログだけを表示します
# 例: docker logs --since 30m evangelion-app
# 例: docker logs --since 2026-03-26T00:00:00 evangelion-app
# docker logs --until {時刻または相対時間} {コンテナ名}
# → 指定した時刻以前のログだけを表示します
# 例: docker logs --until 2026-03-26T06:00:00 evangelion-app
# -----------------------------------------------
# stderr だけを確認する(シェルのリダイレクト)
# -----------------------------------------------
# docker logs {コンテナ名} 2>&1 | grep ERROR
# → 標準出力と標準エラー出力をまとめて grep でフィルタリングします
# 例: docker logs evangelion-app 2>&1 | grep ERROR
構文一覧
| 構文 / オプション | 概要 |
|---|---|
docker logs {コンテナ名} | 対象コンテナのログを全件まとめて表示します。 |
--follow(-f) | ログをリアルタイムで追跡します。Ctrl+C で終了するまで新しい出力を流し続けます。 |
--timestamps(-t) | 各行の先頭に RFC3339Nano 形式のタイムスタンプを付加します。 |
--tail {行数}(-n) | 末尾から指定した行数だけを表示します。--tail all を指定すると全件表示します。 |
--since {時刻} | 指定した時刻以降のログだけを表示します。相対時間(例: 30m・2h)または RFC3339 形式の絶対時刻を指定できます。 |
--until {時刻} | 指定した時刻以前のログだけを表示します。--since と組み合わせて期間を絞り込めます。 |
--details | ログドライバーに渡された追加属性も表示します。通常のログ確認では使用しません。 |
サンプルコード
コンテナのログを全件表示する
# ----------------------------------------------- # evangelion-app コンテナのログを全件表示します # ----------------------------------------------- # まずコンテナを起動します(すでに起動済みの場合はこの手順は不要です) docker run -d --name evangelion-app \ -e APP_PILOT=shinji \ nginx:alpine # ログを全件表示します docker logs evangelion-app
$ docker logs evangelion-app 2026/03/26 09:00:00 [notice] 1#1: using the "epoll" event method 2026/03/26 09:00:00 [notice] 1#1: nginx/1.25.3 2026/03/26 09:00:00 [notice] 1#1: start worker processes 172.17.0.1 - - [26/Mar/2026:09:00:05 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.88.1"
ログをリアルタイムで追跡する(--follow)
# ----------------------------------------------- # --follow でログをリアルタイムに追跡します # ----------------------------------------------- # rei-server コンテナのログを流し続けます(Ctrl+C で停止) docker logs --follow rei-server
$ docker logs --follow rei-server 2026/03/26 09:01:00 [notice] 1#1: start worker processes 2026/03/26 09:01:10 [notice] connected: pilot=ayanami-rei 2026/03/26 09:01:15 [notice] request received from asuka-langley 2026/03/26 09:01:20 [error] synchronization failed: unit-02 not responding ^C
タイムスタンプ付きで末尾20行を表示する
# ----------------------------------------------- # --timestamps と --tail を組み合わせて使います # ----------------------------------------------- # misato-bridge コンテナのログの末尾20行をタイムスタンプ付きで確認します docker logs --timestamps --tail 20 misato-bridge
$ docker logs --timestamps --tail 20 misato-bridge 2026-03-26T09:05:00.123456789Z launch sequence initiated by katsuragi-misato 2026-03-26T09:05:01.234567890Z unit-01 status: standby 2026-03-26T09:05:02.345678901Z unit-01 status: active — pilot: ikari-shinji 2026-03-26T09:05:10.456789012Z alert level upgraded to pattern blue 2026-03-26T09:05:15.567890123Z [ERROR] AT-field breach detected in sector 7
期間を指定してログを絞り込む(--since / --until)
# ----------------------------------------------- # --since で「直近30分以内」のログだけを確認します # ----------------------------------------------- # 直近30分以内のログを表示します docker logs --since 30m gendo-command # ----------------------------------------------- # --since と --until で期間を指定します # ----------------------------------------------- # 2026-03-26 の 09:00〜09:10 の間のログだけを取得します docker logs \ --since 2026-03-26T09:00:00 \ --until 2026-03-26T09:10:00 \ gendo-command
$ docker logs --since 30m gendo-command 2026-03-26T09:03:42.000000000Z [INFO] scenario activated by ikari-gendo 2026-03-26T09:04:00.000000000Z [INFO] third-impact protocol: pending $ docker logs --since 2026-03-26T09:00:00 --until 2026-03-26T09:10:00 gendo-command 2026-03-26T09:03:42.000000000Z [INFO] scenario activated by ikari-gendo 2026-03-26T09:04:00.000000000Z [INFO] third-impact protocol: pending 2026-03-26T09:05:30.000000000Z [WARN] unit-01 synchronization rate exceeded limit
概要
『docker logs』はコンテナが stdout・stderr に書き出した内容をそのまま取得します。コンテナが停止している場合でもログは保持されており、同じコマンドで確認できます。ただし、デフォルトのログドライバーは json-file であり、ホスト上の /var/lib/docker/containers/{ID}/{ID}-json.log に保存されます。--log-driver none でコンテナを起動した場合はログが保存されないため docker logs は使用できません。また、--follow でリアルタイム追跡中にコンテナが停止すると、自動的に追跡が終了します。本番環境では --tail で表示行数を絞り込むことで、大量ログによるターミナルの負荷を抑えられます。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。