目錄
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 服務名稱。
相關章節
- 查看日誌與除錯
- docker compose 指令:
docker compose logs - 清理硬碟空間:日誌大小上限
動手練習
練習:顯示 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日