Google Code Prettify

2018年2月27日 星期二

docker logs

在「docker 基本指令」中了解了一些 docker 的基本操作指令,這裡來看一下怎麼觀察 docker 運行的過程產生的 logs,就以 Apache HTTP Server 來當例子好了。
  • 安裝 Apache HTTP Server
安裝的指令如下:
docker run -d -p 80:80 --name httpd httpd
-d: 在背景執行
-p: port 的映射,將 httpd service 80 port 對映到本機的 80 port。
安裝好之後以 docker images 查一下,應該可以看到如下:
  • 查看 docker logs
docker logs -f httpd
-f: 查看 log 尾部的意思,也就是說,這個指令只會顯示 log 最後的幾行,如果有新的 log 產生會顯示新的 log,內容差不多如下。
因為這是個 http server,我的電腦的 IP 是 192.168.0.200,在瀏覽器輸入 http://192.168.0.200 會看到如下畫面,表示服務確實在運行。
同時,因為瀏覽器有對 http server 進行 request,可以在剛剛的畫面看到又新增了 log。
  • log file
上面的指令讓我們可以查看 docker log,而實際上這些 log 存放在那呢? 首先進入 /var/lib/docker/containers 目錄,裡面會有正在運行的 container 的 log,目錄名稱為 container process id,http server 是 aaefcd14c3 那一個 (docker ps -a 可得知)。
進到 http server container 的 log 目錄,可以找到一個 {container id}-json.log 的檔案 (檔名很長的那個),看一下內容,如下,非常類似於前面用指令查看到的 log,但仔細看,是 json 格式。
  • Logging Driver
docker log 儲存的格式如上所示是 json 格式,這是預設,是可以變更的,先執行如下指令:
docker info | grep 'Logging Driver'
docker info 指令可以看到 docker 的一些設定,其中一項 Logging Driver 就是設定 log 儲存格式,預設如下,可以看到設定為 json-file。




沒有留言:

張貼留言