非常教程

Docker 17参考手册

引擎: 管理员指南 | Engine: Admin Guide

Amazon CloudWatch记录日志记录驱动程序(引擎) | Amazon CloudWatch logs logging driver (Engine)

awslogs日志驱动程序发送集装箱日志亚马逊 CloudWatch 的日志。可以通过 AWS 管理控制台或 AWS 开发工具包和命令行工具检索日志条目。

用法

要将awslogs驱动程序用作默认日志记录驱动程序,请将log-driverlog-opt键设置为daemon.json位于 Linux 主机/etc/docker/或 Windows Server 上C:\ProgramData\docker\config\daemon.json的文件中的适当值。有关使用Docker 配置的更多信息daemon.json,请参阅 daemon.json 。以下示例将日志驱动程序awslogs设置为并设置该awslogs-region选项。

{
  "log-driver": "awslogs",
  "log-opts": {
    "awslogs-region": "us-east-1"
  }
}

重新启动 Docker 以使更改生效。

您可以使用以下--log-driver选项来设置特定容器的日志记录驱动程序docker run

docker run --log-driver=awslogs ...

Amazon CloudWatch Logs 选项

您可以添加日志记录选项以daemon.json设置 Docker 范围的默认值,或者在启动容器时使用--log-opt NAME=VALUE标志指定 Amazon CloudWatch Logs 日志记录驱动程序选项。

awslog-区域

awslogs日志驱动程序发送您的 Docke 日志的特定区域。使用awslogs-region日志选项或AWS_REGION环境变量来设置区域。默认情况下,如果Docker守护进程在 EC2 实例上运行,并且没有设置区域,则驱动程序使用实例的区域。

docker run --log-driver=awslogs --log-opt awslogs-region=us-east-1 ...

awslog-组

您必须指定一个日志组为awslogs日志驱动程序。您可以使用awslogs-group日志选项指定日志组:

docker run --log-driver=awslogs --log-opt awslogs-region=us-east-1 --log-opt awslogs-group=myLogGroup ...

awslog-流

要配置应该使用哪个日志流,您可以指定awslogs-stream日志选项。如果未指定,则将容器标识 ID 用作日志流。

注意:给定日志组内的日志流一次只能由一个容器使用。同时为多个容器使用相同的日志流可能会导致日志记录性能下降。

awslogs-创建-组

如果日志组不存在,日志驱动程序将默认返回错误。但是,您可以将根据awslogs-create-group需要设置true为自动创建日志组。awslogs-create-group选项默认为false

$ docker run --log-driver=awslogs \
             --log-opt awslogs-region=us-east-1 \
             --log-opt awslogs-group=myLogGroup \
             --log-opt awslogs-create-group=true \
             ...

注意:在尝试使用awslogs-create-group之前,您的 AWS IAM 策略必须包含 logs:CreateLogGroup权限。

awslogs-日期时间-格式

awslogs-datetime-format选项定义了Python strftime格式的多行起始模式。日志消息由与模式匹配的行和与模式不匹配的任何后续行组成。因此匹配的行是日志消息之间的分隔符。

使用此格式的用例的一个示例是解析输出,如堆栈转储,否则可能会记录在多个条目中。正确的模式允许它在一个条目中被捕获。

如果awslogs-datetime-formatawslogs-multiline-pattern两者都配置,则此选项始终优先。

注意:多行日志记录会执行所有日志消息的正则表达式解析和匹配,这可能会对日志记录性能产生负面影响。

考虑以下日志流,其中新的日志消息以时间戳开始:

[May 01, 2017 19:00:01] A message was logged
[May 01, 2017 19:00:04] Another multiline message was logged
Some random message
with some random words
[May 01, 2017 19:01:32] Another message was logged

格式可以表达为一个strftime表达式[%b %d, %Y %H:%M:%S],并且awslogs-datetime-format可以将该值设置为该表达式:

$ docker run --log-driver=awslogs \
             --log-opt awslogs-region=us-east-1 \
             --log-opt awslogs-group=myLogGroup \
             --log-opt awslogs-datetime-format='[%b %d, %Y %H:%M:%S]' \
             ...

这会将日志解析到以下 CloudWatch 日志事件中:

# First event
[May 01, 2017 19:00:01] A message was logged

# Second event
[May 01, 2017 19:00:04] Another multiline message was logged
Some random message
with some random words

# Third event
[May 01, 2017 19:01:32] Another message was logged

支持以下strftime代码:

代码

含义

示例

%a

平日缩写名称。

Mon

%A

平日全名。

Monday

%w

平日为十进制数字,其中0表示星期日,6表示星期六。

0

%d

一个月中的一天作为零填充的十进制数字。

08

%b

月缩写名称。

Feb

%B

月份全名。

February

%M

月份作为零填充十进制数字。

02

%Y

世纪作为十进制数字。

2008

%y

没有世纪的一年是一个零填充的十进制数。

08

%H

小时(24小时制)作为零填充十进制数字。

19

%I

小时(12小时制)作为零填充的十进制数字。

07

%p

上午或下午。

AM

%M

分钟作为零填充的十进制数字。

57

%S

其次作为零填充十进制数。

04

%L

毫秒为零填充的十进制数字。

123

%f

微秒作为零填充的十进制数字。

000345

%z

UTC偏移量格式为+ HHMM或-HHMM。

+1300

%Z

时区名称。

PST

%j

一年中的一天为零填充的十进制数字。

363

awslogs-多-模式

awslogs-multiline-pattern选项使用正则表达式定义多行开始模式。日志消息由与模式匹配的行和与模式不匹配的任何后续行组成。因此匹配的行是日志消息之间的分隔符。

如果awslogs-datetime-format还配置了此选项,则忽略此选项。

注意:多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对记录性能产生负面影响。

例如,要处理以下日志流,新的日志消息从模式开始INFO*

考虑以下日志流,其中每条日志消息应以 pattherINFO开头:

INFO A message was logged
INFO Another multiline message was logged
     Some random message
INFO Another message was logged

你可以使用^INFO正则表达式:

$ docker run --log-driver=awslogs \
             --log-opt awslogs-region=us-east-1 \
             --log-opt awslogs-group=myLogGroup \
             --log-opt awslogs-multiline-pattern='^INFO' \
             ...

这会将日志解析到以下 CloudWatch 日志事件中:

# First event
INFO A message was logged

# Second event
INFO Another multiline message was logged
     Some random message

# Third event
INFO Another message was logged

标签

指定tag为选项的替代awslogs-stream选项。tag解释模板标记(例如{{.ID}}{{.FullID}}{{.Name}} docker.{{.ID}})。有关所有支持的模板替换的详细信息,请参阅标记选项文档。

当两个awslogs-streamtag被指定,提供的awslogs-stream值将覆盖与指定的tag模板。

如果未指定,则将容器标识 ID 用作日志流。

注意:CloudWatch 日志 API 不支持:日志名称。这可能会导致一些问题时使用{{ .ImageName }}作为标记,因为泊坞窗图像具有格式IMAGE:TAG,如alpine:latest。模板标记可用于获取正确的格式。要获取图像名称和容器ID的前12个字符,可以使用:--log-opt tag='{{ with split .ImageName ":" }}{{join . "_"}}{{end}}-{{.ID}}'输出结果如下所示:alpine_latest-bf0072049c76

证书

您必须向 Docker 守护程序(daemon)提供 AWS 凭证才能使用awslogs日志记录驱动程序。您可以提供这些凭证用AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY以及AWS_SESSION_TOKEN环境变量,默认的 AWS 共享的凭证文件(~/.aws/credentials根用户),或(如果正在运行在 Amazon EC2 实例泊坞窗守护进程)的 Amazon EC2 实例配置文件。

凭证必须应用允许logs:CreateLogStreamlogs:PutLogEvents采取的操作,如以下示例所示。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

AWS, Amazon, CloudWatch, logging, driver

引擎: 管理员指南 | Engine: Admin Guide相关

1. 绑定挂载 | Bind mounts (Engine)
2.使用Prometheus(引擎)收集Docker指标 | Collect Docker metrics with Prometheus (Engine)
3.配置和运行Docker(引擎) | Configuring and running Docker (Engine)
4.配置日志记录驱动程序 | Configuring logging drivers (Engine)
5.使用systemd控制和配置Docker(引擎) | Control and configure Docker with systemd (Engine)
6.ETW日志记录驱动程序(引擎) | ETW logging driver (Engine)
7.流利的日志驱动程序(引擎) | Fluentd logging driver (Engine)
8.格式化命令和日志输出(引擎) | Format command and log output (Engine)
9.Google Cloud日志记录驱动程序(引擎) | Google Cloud logging driver (Engine)
10.Graylog扩展格式(GELF)日志记录驱动程序(引擎) | Graylog Extended Format (GELF) logging driver (Engine)
11.Journald日志记录驱动程序(引擎) | Journald logging driver (Engine)
12.JSON文件日志记录驱动程序(引擎) | JSON File logging driver (Engine)
13.在守护进程停机期间保持容器处于活动状态(引擎) | Keep containers alive during daemon downtime (Engine)
14.限制容器的资源(引擎) | Limit a container's resources (Engine)
15.通过大使容器链接(引擎) | Link via an ambassador container (Engine)
16.记录驱动程序的日志标记(引擎) | Log tags for logging driver (Engine)
17.Logentries日志驱动程序(引擎) | Logentries logging driver (Engine)
18.PowerShell DSC用法(引擎) | PowerShell DSC usage (Engine)
19.修剪未使用的Docker对象(引擎) | Prune unused Docker objects (Engine)
20.在容器中运行多个服务(引擎) | Run multiple services in a container (Engine)
21.运行时指标(引擎) | Runtime metrics (Engine)
22.Splunk日志记录驱动程序(引擎) | Splunk logging driver (Engine)
23.自动启动容器(引擎) | Start containers automatically (Engine)
24.存储概述(引擎) | Storage overview (Engine)
25.Syslog日志记录驱动程序(引擎) | Syslog logging driver (Engine)
26.tmpfs mounts
27.解决卷问题(引擎) | Troubleshoot volume problems (Engine)
28.使用日志驱动程序插件(引擎) | Use a logging driver plugin (Engine)
29.使用Ansible(引擎) | Using Ansible (Engine)
30.使用Chef(引擎) | Using Chef (Engine)
31.使用Puppet(引擎) | Using Puppet (Engine)
32.查看容器的日志(引擎) | View a container's logs (Engine)
33.Volumes (Engine)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06