將容器的日志發送到STDOUT和STDERR是docker的默認日志行為。實際上,docker提供了多種日志機制幫助用戶從容器中提取日志,這些機制被稱為logging driver
docker的默認logging driver是json-file
docker info | grep json-file
如果容器在啟動的時候沒有特別指明,就會使用這個默認的logging driver
json-file是將日志保存在json文件中,docker負責格式化其內容並輸出到STDOUT和STDERR
我們可以在Host的容器目錄中找到這個文件,路徑為:
除了json-file,docker 還支持多種logging driver。完整列表可以查詢官方文檔:https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers
none:是disable容器日志功能
awslogs,splunk和gcplogs是第三方日志托管服務
gelf和fluentd是兩種開源的日志管理方案
容器啟動的時候可以通過--log-driver指定使用的logging driver。如果設置docker默認的logging driver,需要修改docker daemon的啟動腳本,指定--log-driver參數,比如:
ExecStart-/usr/bin/dockerd -H fd://--log-driver=syslog --log-opt
每種logging driver都有自己的--log-opt,使用時請參考官方文檔