Docker日誌那點事

一套軟件系統的整個生命週期中,其中超過80%的時間都是在運維。運維中有幾塊不可缺,其中監控和日誌,雖然沒有這麼複雜,但卻是運維的基礎。

docker的出現,顛覆了原基礎架構以及應用部署的模式。今天聊一下docker環境的日誌。

我們先準備個測試環境

先在我們的docker host上起一個tomcat的容器

輸入命令docker search tomcat

image

我們選擇STARS最高的一個鏡像

然後pull下來

docker pull docker.io/tomcat

docker-pull-tomcat

我們使用docker images 找到下載完成的鏡像

image

現在我們啓動一個tomcat的容器

docker run -d -p 8080:8080 docker.io/tomcat

啓動成功後,我們可以看到完整的容器id

7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545

image

我們也可以使用docker ps 查看我們剛纔啓動的容器

但是container id 會被階段,顯示並不完整,但是實際上顯示部分已經是唯一的了

docker ps --no-trunc 命令可以不截斷完整的id

image

大家要記住這個id號,這個很重要

基礎環境已經準備好了。

我們現在要開始查看這個容器的日誌了

我們輸入(命令格式docker logs container-id)docker logs 7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545

我們會看到有日誌打出,屏幕上顯示的都是tomcat的日誌

image

使用docker logs還有幾個參數可以選擇 例如 –t 是顯示時間,時間會精確到秒後9位

image

而使用 docker logs –f 則是實時輸出日誌

重點來了,爲什麼容器內的日誌可以通過docker logs查看呢?是因爲容器內應用的日誌都輸出到標準輸出了(打到console,或者打到屏幕上,這樣說比較容易理解)

如果你的日誌還是寫在文件裏,那是無法通過docker logs查看的!

問題來了,如果有人說:我不想通過docker logs查看日誌,我想直接拿到日誌文件,那文件在哪裏呢?

文件在這個位置

/var/lib/docker/containers/

進入這個目錄我ls了一下,然後我就驚呆了! 這都是什麼呀

我的確進入了一個計算機的世界!

別急,這些都是以容器id爲名稱的文件夾,您需要的日誌都在這些文件夾裏

image

還記得我剛纔讓您記住的容器id麼? 我們cd 進入這個目錄

image

還真有這個目錄!好神奇

ls一下,發現有一個*-json.log的文件

大哥您要的日誌文件在此!

image

當然如果您公司內部有統一的日誌收集系統例如splunk,elk什麼,也可以抽取這個位置的日誌。

回到剛纔中間的聊到的一個問題,如果您的日誌寫在本地怎麼辦?

有2個方法,也許不止

1,您可以exec到容器內去查看,具體查看的方法與您之前直接在電腦上查看日誌是一樣的。

2,您可以在容器啓動的時候掛在一個volume,可以將日誌寫入到這volume上,您可以直接到這個volume裏上查看日誌。

今天就到這裏

客官,這是您的docker 請用好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章