一套軟件系統的整個生命週期中,其中超過80%的時間都是在運維。運維中有幾塊不可缺,其中監控和日誌,雖然沒有這麼複雜,但卻是運維的基礎。
docker的出現,顛覆了原基礎架構以及應用部署的模式。今天聊一下docker環境的日誌。
我們先準備個測試環境
先在我們的docker host上起一個tomcat的容器
輸入命令docker search tomcat
我們選擇STARS最高的一個鏡像
然後pull下來
docker pull docker.io/tomcat
我們使用docker images 找到下載完成的鏡像
現在我們啓動一個tomcat的容器
docker run -d -p 8080:8080 docker.io/tomcat
啓動成功後,我們可以看到完整的容器id
7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我們也可以使用docker ps 查看我們剛纔啓動的容器
但是container id 會被階段,顯示並不完整,但是實際上顯示部分已經是唯一的了
docker ps --no-trunc 命令可以不截斷完整的id
大家要記住這個id號,這個很重要
基礎環境已經準備好了。
我們現在要開始查看這個容器的日誌了
我們輸入(命令格式docker logs container-id)docker logs 7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我們會看到有日誌打出,屏幕上顯示的都是tomcat的日誌
使用docker logs還有幾個參數可以選擇 例如 –t 是顯示時間,時間會精確到秒後9位
而使用 docker logs –f 則是實時輸出日誌
重點來了,爲什麼容器內的日誌可以通過docker logs查看呢?是因爲容器內應用的日誌都輸出到標準輸出了(打到console,或者打到屏幕上,這樣說比較容易理解)
如果你的日誌還是寫在文件裏,那是無法通過docker logs查看的!
問題來了,如果有人說:我不想通過docker logs查看日誌,我想直接拿到日誌文件,那文件在哪裏呢?
文件在這個位置
/var/lib/docker/containers/
進入這個目錄我ls了一下,然後我就驚呆了! 這都是什麼呀
我的確進入了一個計算機的世界!
別急,這些都是以容器id爲名稱的文件夾,您需要的日誌都在這些文件夾裏
還記得我剛纔讓您記住的容器id麼? 我們cd 進入這個目錄
還真有這個目錄!好神奇
ls一下,發現有一個*-json.log的文件
大哥您要的日誌文件在此!
當然如果您公司內部有統一的日誌收集系統例如splunk,elk什麼,也可以抽取這個位置的日誌。
回到剛纔中間的聊到的一個問題,如果您的日誌寫在本地怎麼辦?
有2個方法,也許不止
1,您可以exec到容器內去查看,具體查看的方法與您之前直接在電腦上查看日誌是一樣的。
2,您可以在容器啓動的時候掛在一個volume,可以將日誌寫入到這volume上,您可以直接到這個volume裏上查看日誌。
今天就到這裏
客官,這是您的docker 請用好。