docker 是一種流行的應(yīng)用程序容器化平臺,能夠加快應(yīng)用程序的構(gòu)建部署和管理速度。然而,在使用 docker 運行應(yīng)用程序時,我們可能會遇到一些意外問題,這就需要查看 docker 啟動日志以了解問題的根本原因。那么,怎么查看 docker 啟動日志呢?
- 使用 docker logs 命令
Docker 提供了一個內(nèi)置的命令 docker logs,可以用于查看容器內(nèi)的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出。要使用該命令,可以先查看正在運行的容器的 ID 或者名稱,通過 docker ps 命令可以查看:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8623f22d0b74 nginx "nginx -g 'daemon of…" 10 days ago Up 2 hours 80/tcp web
在上面的輸出中,容器 ID 為 8623f22d0b74,容器名稱為 web。可以使用 docker logs 命令查看容器內(nèi)的日志輸出:
$ docker logs 8623f22d0b74 172.17.0.1 - - [02/May/2020:19:41:04 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-" 172.17.0.1 - - [02/May/2020:19:41:06 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-"
在上面的輸出中,我們可以看到 NGINX 服務(wù)器的訪問日志,這個命令可以簡單地幫助我們找到容器的啟動問題。
- 使用 docker events 命令
除了使用 docker logs 命令,我們還可以使用 docker events 命令來查看 Docker 啟動事件。這個命令可以觀察 Docker 發(fā)出的所有事件,并輸出相應(yīng)的信息。例如,我們可以使用以下命令查看 Docker 運行的所有事件:
$ docker events ... 2020-05-02T19:44:07.842095081+00:00 container destroy 8623f22d0b746eee40b1568a78ffdf2f1555a9c5b557d8c5a5a5eaa32c7f1ede (image=nginx, name=web) 2020-05-02T19:44:08.273816081+00:00 network disconnect 6cbedee6e77d 03ac9adf39af42c8d651f0ed60073c92837e866aebb0c75bfcb3f3c9a701bcb7 (endpoint=03ac9adf39af42c8d651f0ed60073c92837e866aebb0c75bfcb3f3c9a701bcb7, name=bridge, type=bridge) 2020-05-02T19:44:09.260029423+00:00 network destroy 6cbedee6e77d (name=bridge)
在上面的輸出中,我們可以看到容器的銷毀事件、網(wǎng)絡(luò)的斷開事件以及網(wǎng)絡(luò)的銷毀事件。這個命令可以幫助我們了解 Docker 容器的其他事件。
- 查看 Docker 日志文件
Docker 容器的所有日志都會存儲在容器的文件系統(tǒng)中。因此,我們可以使用常規(guī)的文件查看工具比如 cat、tail 或 grep 來查看它們。例如,如果要查看容器的系統(tǒng)日志,可以使用以下命令:
$ docker inspect --format='{{.LogPath}}' 8623f22d0b74 /var/lib/docker/containers/8623f22d0b74cea5f8d76432734ec06c19683d698583cc59dd8f4af4bb70ac10/8623f22d0b74cea5f8d76432734ec06c19683d698583cc59dd8f4af4bb70ac10-json.log
這條命令將輸出容器的日志文件路徑。我們可以繼續(xù)使用 tail 命令來查看日志文件的后幾行:
$ docker inspect --format='{{.LogPath}}' 8623f22d0b74 | xargs tail -f ...
在上面的輸出中,我們可以看到容器的實時日志輸出。可以使用 Ctrl-C 快捷鍵來停止查看日志。
總結(jié)
Docker 的日志管理是一個復(fù)雜的過程,但是通過使用 Docker 提供的內(nèi)置命令,我們可以輕松地查看容器內(nèi)發(fā)生的問題。通過使用 docker logs 命令、docker events 命令或者查看容器日志文件,我們可以及時了解 Docker 容器的正在運行的情況,為部署和管理 Docker 應(yīng)用程序提供有力的支持。