今天跟你們聊聊docker的日誌!

Docker日誌概念

若是時光能夠倒流,現實世界的每一步均可以分解到最小,記錄下來,就是日誌。萬物即日誌。nginx

面對歷史,審視日誌,能夠選擇忘卻,也能夠選擇銘記;經歷過的,能夠選擇珍藏,一樣也可讓它塵封。docker

Docker 容器又未嘗不是?日誌就像一根時間軸,你在或者不在,他都在那。有人對其善意,有人卻對其隨意。如若不信,能夠回憶,本身是否善待 Docker 容器的日誌json

  1. 傳統應用的日誌vim

    • stdout標準輸出日誌
    • 經過log4j等工具直接寫入硬盤的日誌
  2. Docker 時代的日誌api

全部的容器經過Docker Daemon啓動,實際上屬於Docker的一個子進程, 它能夠拿到你的容器裏面進程的標準輸出,而後拿到標準輸出以後,會經過它自身的一個叫作LogDriver的模塊來處理,LogDriver就是Docker用來處理容器標準輸出的一個模塊。 Docker支持不少種不一樣的處理方式,好比你的標準輸出以後,在某一種狀況下會把它寫到一個日誌裏面。編輯器

  1. Docker日誌如何使用微服務

    1. 項目中使用log4j等工具寫入到容器中某個目錄,而後經過啓動啓動時候去掛載到主機目錄,這是一種常見的使用手段(本文不探討這種方式)工具

    2. 項目中全部日誌stdout標準輸出,此時咱們利用Docker的日誌系統去收集日誌學習

如何查看Docker日誌?

能夠經過docker logs containerID命令查看容器的日誌ui

$ docker logs [OPTIONS] CONTAINER
  Options:
        --details        顯示更多的信息
    -f, --follow         跟蹤實時日誌
        --since string   顯示自某個timestamp以後的日誌,或相對時間,如42m(即42分鐘)
        --tail string    從日誌末尾顯示多少行日誌, 默認是all
    -t, --timestamps     顯示時間戳
        --until string   顯示自某個timestamp以前的日誌,或相對時間,如42m(即42分鐘)

下列爲Docker經常使用的一些日誌命令:

  • 查看指定時間後的日誌,只顯示最後10行:
$ docker logs -f -t --since="2021-04-01" --tail=10 CONTAINER_ID

  • 查看最近30分鐘的日誌:
$ docker logs --since 30m CONTAINER_ID
  • 查看某時間以後的日誌:
$ docker logs -t --since="2021-04-01T13:23:37" CONTAINER_ID
  • 查看某時間段日誌:
$ docker logs -t --since="2021-04-01T13:23:37" --until "2021-04-01T16:23:37" CONTAINER_ID

Docker日誌存儲在哪裏?

Dcoker默認的存儲目錄在 /var/lib/docker下,咱們能夠經過修改命令修改存儲目錄:

vim /etc/docker/daemon.json 
#修改到/opt目錄下
{
  "data-root": "/opt/docker"
}

查看某個容器的日誌目錄在哪裏:

$  docker inspect -f {{".LogPath"}}  CONTAINER_ID

/var/lib/docker/containers/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log

/var/lib/docker/containers: 默認容器存儲地址 2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad:容器id 2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log:容器的日誌文件,格式爲默認的json-file

Docker日誌驅動分類

  • 驅動類型選擇
選項 描述
none 不使用日誌
local 自定義日誌驅動
json-file 默認json存儲的日誌
syslog 日誌寫入到指定的syslog地址
journald 日誌寫入到指定jounald
fluentd 日誌寫入到指定fluentd服務
awslogs 日誌發送到指定的Amazon CloudWatch Logs
splunk 日誌發送到指定的splunk服務
gcplogs 日誌發送到Google Cloud日誌系統
logentries 日誌發送到Rapid7 Logentries
  • 如何使用驅動?

    1. 修改Docker Daemon, 這樣會對全部容器生效, fluentd:

      dockerd --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224  
    2. 在容器啓動時加上配置項, 這樣配置只會對當前容器生效:

    docker run --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224  nginx

結束

下篇講解Docker-Swarm如何在微服務項目中使用!

歡迎關注公衆號! 公衆號回覆:入羣 ,掃碼加入咱們交流羣! 掃碼關注公衆號獲取更多學習資料

相關文章
相關標籤/搜索