目錄

docker logs 指令:查看容器日誌(-f、--tail、--since)

docker logs 顯示容器主程序的輸出。除錯流程見 查看日誌與除錯。

語法

docker logs [參數] 容器

參數

參數說明
-f, --follow持續顯示新的日誌,按 Ctrl+C 停止
-n, --tail 數字只顯示最後 n 行(預設 all)
-t, --timestamps每行前面加上時間戳記
--since 時間只顯示某個時間之後的日誌,例如 10m、2h、2026-10-14T08:00:00
--until 時間只顯示某個時間之前的日誌
--details顯示額外的詳細資訊(啟動時用 --log-opt 加上的標籤等)

範例

範例容器每秒在 stdout 輸出 line N、在 stderr 輸出 error N,共 5 次:

docker run -d --name logger alpine:3.23 sh -c 'for i in 1 2 3 4 5; do echo line $i; echo error $i >&2; sleep 1; done; sleep 600'

全部、最後幾行、加上時間

$ docker logs logger
line 1
error 1
line 2
error 2
line 3
error 3
error 4
line 4
error 5
line 5

$ docker logs --tail 2 logger
error 5
line 5

$ docker logs -t --tail 2 logger
2026-10-13T05:28:48.681587356Z error 5
2026-10-13T05:28:48.681659184Z line 5
  • 不加參數顯示全部,stdout 與 stderr 交錯出現,順序依時間。
  • --tail 2 只看最後 2 行,日誌很多時一定要加。
  • -t 加上 Docker 記錄的時間(UTC),精確到奈秒。

最近一段時間

$ docker logs --since 3s logger
error 4
line 4
error 5
line 5

--since 3s 只顯示最近 3 秒的日誌。排查「剛剛發生了什麼」時,比 --tail 更準確。

stdout 與 stderr

$ docker logs logger 2>/dev/null
line 1
line 2
line 3
line 4
line 5

$ docker logs logger 2>&1 | grep error
error 1
error 2
error 3
error 4
error 5
  • docker logs 會把容器的 stdout 和 stderr 分別送到你終端機的 stdout 和 stderr。
  • 2>/dev/null 丟掉 stderr,就只剩 line。
  • 要用 grep 搜尋錯誤訊息,必須先用 2>&1 把 stderr 合併進 stdout,否則管線只收到 stdout,什麼都找不到。

持續追蹤

$ timeout 3 docker logs -f --tail 1 logger
line 5

-f 會一直等待新的日誌,搭配 --tail 1 先顯示最後一行再開始追蹤。這裡用 timeout 3 讓它 3 秒後自動結束,平常用 Ctrl+C 停止。Compose 中的等效指令是 docker compose logs -f 服務名稱。

相關章節

動手練習

練習:顯示 logger 容器最近 1 分鐘內、包含 error 的日誌,並加上時間。

答案
docker logs -t --since 1m logger 2>&1 | grep error

常見問題

docker logs 沒有任何輸出?

docker logs 只收集容器主程序寫到標準輸出(stdout)和標準錯誤(stderr)的內容。程式如果把日誌寫進檔案(例如 /var/log/app.log),就要用 docker exec 讀那個檔案,或讓程式改成輸出到 stdout。

Python 程式的日誌延遲很久才出現?

Python 在沒有終端機時會緩衝輸出。設定環境變數 PYTHONUNBUFFERED=1 就會即時輸出,見 [Python 應用](/zh-tw/docker/python/)。

docker logs | grep 找不到明明存在的錯誤訊息?

錯誤訊息通常寫在 stderr,而管線 | 只傳遞 stdout。要寫成 docker logs 容器 2>&1 | grep 關鍵字。

日誌太大占用硬碟空間怎麼辦?

設定日誌大小上限(--log-opt max-size=10m --log-opt max-file=3),實測見 [清理硬碟空間](/zh-tw/docker/cleanup/)。

更新於 2026年10月14日