近年來, Docker 技術(shù)的使用越來越廣泛,它能夠幫助開發(fā)者在不同平臺上進行相同的操作,也具有便攜性和高可移植性,但在使用 Docker 過程中,對于日志的記錄和分析我們也需要給予足夠的重視和關(guān)注。
Docker 是一種輕量級的容器技術(shù),它的日志記錄方式與傳統(tǒng)的服務(wù)器不同,這里我們就來看看 Docker 的日志記錄。
$ docker logs [OPTIONS] CONTAINER
# 示例
$ docker logs mycontainer
通過上述命令,我們可以查看 Docker 容器的日志信息,其中 OPTIONS 參數(shù)包括:
--details
:顯示日志詳情。--follow
,-f
:跟隨日志輸出。--since
、--until
:按時間篩選。--tail
:指定要顯示的日志行數(shù)。--timestamps
:顯示時間戳。
除了使用 Docker logs 查看容器的日志外,我們還可以使用 Docker 自帶的日志驅(qū)動進行日志記錄,Docker 官方支持的日志驅(qū)動有以下幾種:
json-file
:將日志記錄在 JSON 格式的文件中。syslog
:將日志寫入 Syslog。fluentd
:將日志寫入 Fluentd。journald
:將日志寫入 Systemd-journald。gelf
:將日志寫入Graylog Extended Log Format(GELF)。awslogs
:將日志寫入 AWS CloudWatch Logs。
在實際使用過程中,需要在 docker run 指令的時候加入--log-driver
參數(shù)來設(shè)置日志驅(qū)動。
$ docker run --log-driver=driver-name[OPTIONS] IMAGE
# 示例
$ docker run --log-driver=json-file mycontainer
我們還可以通過配置 Docker 的日志驅(qū)動來實現(xiàn)更高級的日志記錄和分析,其中常用的是 GELF 和 Fluentd,這里以 GELF 為例,來看看如何配置 Docker 的日志驅(qū)動。
首先需要將 Docker 的日志驅(qū)動改為gelf
,默認情況下 Docker 日志驅(qū)動為json-file
,需要修改 Docker daemon 的配置文件。
$ vim /etc/docker/daemon.json
# 增加如下字段
{
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://graylog-server:12201",
"tag": "docker/{{.Name}}"
}
}
修改后,需要重啟 Docker 服務(wù),重新加載 Docker daemon 的配置。
$ systemctl restart docker
# 查看 Docker daemon 配置
$ docker info | grep "Logging Driver"
重啟 Docker daemon 后,使用docker run
命令啟動容器時自動使用 GELF 日志驅(qū)動。
當然,不同的日志驅(qū)動都有自己的特點和用途,需要根據(jù)實際需求進行選擇和配置。