docker logs
命令(基礎且最常用)docker logs
是Docker原生提供的日志查看工具,適用于大多數場景,支持多種選項靈活控制日志輸出。
docker logs <容器ID或名稱>
-f
或--follow
選項,類似tail -f
,持續跟蹤容器最新日志輸出。docker logs -f <容器ID或名稱>
--tail
指定顯示的日志條數(默認顯示全部),常用于快速查看最新日志。docker logs --tail 100 <容器ID或名稱> # 顯示最后100條日志
--since
(開始時間)和--until
(結束時間)篩選日志,支持相對時間(如10m
表示10分鐘前)和絕對時間(如2025-01-01T12:00:00Z
)。docker logs --since 30m <容器ID或名稱> # 最近30分鐘的日志
docker logs --since "2025-01-01T00:00:00Z" --until "2025-01-01T23:59:59Z" <容器ID或名稱> # 指定日期范圍的日志
>
,將日志保存到本地文件,便于后續分析。docker logs -f <容器ID或名稱> > container_logs.txt
journalctl
命令(系統級日志查看)若Docker服務通過systemd
管理(默認情況),可通過journalctl
查看容器日志,尤其適合查看系統級日志或容器崩潰時的內核日志。
journalctl -u docker.service
docker ps
獲取容器名稱,再用-t
選項過濾該容器的日志。journalctl -u docker.service -t <容器名稱> -f # 實時查看特定容器日志
journalctl
支持--since
和--until
選項,用法與docker logs
類似。journalctl -u docker.service --since "2025-01-01T00:00:00Z" --until "2025-01-01T23:59:59Z"
若需要更直觀的日志查看體驗,可使用以下可視化工具:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 9999:8080 amir20/dozzle:latest
訪問http://<服務器IP>:9999
,即可查看所有容器的實時日志。docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/user/data:/data portainer/portainer-ce
訪問http://<服務器IP>:9000
,登錄后選擇容器,點擊“Logs”選項卡即可查看。Docker默認使用json-file
驅動,容器日志以JSON格式存儲在宿主機上,可直接查看。
docker inspect
獲取容器日志文件的絕對路徑。docker inspect --format='{{.LogPath}}' <容器ID或名稱>
示例輸出:/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
cat
、less
或tail
命令查看日志文件內容。cat /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
tail -f /var/lib/docker/containers/<容器ID>/<容器ID>-json.log # 實時查看
/etc/docker/daemon.json
配置日志輪轉(默認未開啟)。{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m", // 單個日志文件最大10MB
"max-file": "3" // 最多保留3個文件(當前+2個輪轉)
}
}
修改后重啟Docker服務生效:sudo systemctl restart docker
。