天天看點

Docker容器日志1、檢視docker日志2、docker日志管理

docker容器在運作時,會持續不斷地産生日志,這些日志在什麼地方,如何檢視和管理這些日志呢?

1、檢視docker日志

docker logs 容器ID
#此時會看到很多的日志輸出出來,(如果容器運作時間比較久的話)           

對應在/var/lib/docker/containers目錄下,每個容器ID對應一個檔案夾,存放的都是容器的日志,如下圖

Docker容器日志1、檢視docker日志2、docker日志管理

2、docker日志管理

docker容器日志會持續不斷地輸出,如果不進行清理,最終會導緻磁盤空間不足

  • 2.1、将檔案内容清空
cat /dev/null > *-json.log           

注:docker容器正在運作,那麼使用rm -rf方式删除日志後,通過df -h會發現磁盤空間并沒有釋放。原因是在Linux或者Unix系統中,通過rm -rf或者檔案管理器删除檔案,将會從檔案系統的目錄結構上解除連結(unlink)。如果檔案是被打開的(有一個程序正在使用),那麼程序将仍然可以讀取該檔案,磁盤空間也一直被占用。

  • 2.2、max-size限制docker容器日志大小

    限制單個容器大小,重新開機容器

nginx: 
  image: nginx:1.12.1 
  restart: always 
  logging: 
    driver: "json-file” 
    options: 
      max-size: "5g" 
      max-file: 3           

限制主控端上所有容器大小,重新開機docker程序和容器

/etc/docker/daemon.json

{
  "registry-mirrors": ["https://registry.docker-cn.com"], 
  "insecure-registries": ["registry.docker-cn.com"],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "debug",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

systemctl daemon-reload
systemctl restart docker
           

docker-swam叢集更新方式:sudo docker service update --log-driver json-file --log-opt max-size=1m --log-opt max-file=3 pbblyrmsof5t

參考:

https://docs.docker-cn.com/engine/admin/logging/json-file/#usage