Linux下查看Docker日志的常用方法
docker logs
命令(最常用)docker logs
是Docker原生提供的日志查看工具,用于獲取容器的**標準輸出(stdout)和標準錯誤(stderr)**日志,適用于大多數日常運維場景。
docker logs my_container
(my_container
為容器名稱或ID,可通過docker ps
獲?。?。-f
參數,實時輸出容器最新日志(類似tail -f
),按Ctrl+C
停止。docker logs -f my_container
。--tail
參數限制顯示行數,避免日志過多。docker logs --tail 10 my_container
(僅顯示最后10行)。--since
(從某時間后)和--until
(到某時間前)篩選日志,時間格式支持5m
(5分鐘前)、1h
(1小時前)、2024-01-01
(具體日期)。docker logs --since 5m --until 1h my_container
(查看5分鐘前到1小時前的日志)。若需排查Docker引擎本身的問題(如容器無法啟動、守護進程崩潰),需查看守護進程日志,其位置因Linux發行版而異:
journalctl
命令查看。journalctl -u docker
(實時查看)、journalctl -u docker --since "2024-01-01"
(查看指定時間后日志)。/var/log/upstart/docker.log
,直接用cat
或tail
查看。cat /var/log/upstart/docker.log
。Docker默認使用json-file
日志驅動,容器日志以JSON格式存儲在宿主機的/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
路徑下??赏ㄟ^以下步驟查看:
docker ps
(列出運行中的容器)或docker ps -a
(列出所有容器)。docker inspect --format='{{.LogPath}}' <容器ID>
(輸出日志文件的完整路徑)。cat
、less
或tail
命令查看。cat /var/lib/docker/containers/abc123/abc123-json.log
(abc123
為容器ID)。若應用程序將日志輸出到容器內部的特定文件(如/var/log/app.log
),可通過docker exec
命令進入容器,再使用系統命令查看:
docker exec -it <容器ID> /bin/bash
(bash
為容器內的Shell,若容器無bash,可替換為sh
)。cat
、tail
或less
命令。cat /var/log/app.log
(/var/log/app.log
為應用日志路徑,需根據實際情況調整)。默認的json-file
驅動適合大多數場景,但在生產環境中,可能需要將日志發送到遠程服務器(如syslog、ELK)或第三方日志平臺(如Fluentd、Splunk),此時需配置日志驅動:
/etc/docker/daemon.json
(若文件不存在則創建),添加日志驅動配置。{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "tcp://192.168.0.42:123" // syslog服務器地址
}
}
重啟Docker使配置生效:sudo systemctl restart docker
。docker run
命令中添加--log-driver
和--log-opt
參數。docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --name my_container my_image
。