ロギング・ドライバの設定¶
コンテナには、 Docker デーモンよりも多くの異なるロギング(ログ保存)ドライバがあります。ロギング・ドライバを指定するには、 docker run コマンドで --log-driver=VALUE を使います。以下のオプションをサポートしています。
docker logs コマンドは json-file か journald ロギング・ドライバ使用時のみ利用可能です。
label と env オプションは、ロギング・ドライバで利用可能な追加属性を加えます。各オプションはキーのリストをカンマで区切ります。 label と env キーの間に衝突があれば、 env を優先します。
属性(attribute)を使うには、Docker デーモン起動時に指定します。
docker daemon --log-driver=json-file --log-opt labels=foo --log-opt env=foo,fizz
それから、 label や env の値を指定して、コンテナを起動します。例えば、次のように指定するでしょう。
docker run --label foo=bar -e fizz=buzz -d -P training/webapp python app.py
これはドライバ上のログに依存する追加フィールドを加えるものであり、次の例では json-file の場合です。
"attrs":{"fizz":"buzz","foo":"bar"}
JSON ファイルのオプション¶
json-file ロギング・ドライバがサポートしているロギング・オプションは以下の通りです。
--log-opt max-size=[0-9+][k|m|g]
--log-opt max-file=[0-9+]
--log-opt labels=label1,label2
--log-opt env=env1,env2
ログが max-size に到達すると、ロールオーバされます(別のファイルに繰り出されます)。設定できるサイズは、キロバイト(k)、メガバイト(m)、ギガバイト(g) です。例えば、 --log-opt max-size=50m のように指定します。もし max-size が設定されなければ、ログはロールオーバされません。
max-file で指定するのは、ログが何回ロールオーバされたら破棄するかを指定します。例えば --log-opt max-file=100 のように指定します。もし max-size が設定されなければ、 max-file は有効ではありません。
max-size と max-file がセットされると、 docker logs は直近のログファイルのログ行だけ表示します。
syslog のオプション¶
syslog ロギング・ドライバがサポートしているロギング・オプションは以下の通りです。
--log-opt syslog-address=[tcp|udp]://host:port
--log-opt syslog-address=unix://path
--log-opt syslog-facility=daemon
--log-opt tag="mailer"
syslog-address は、ドライバが接続するリモートの syslog サーバのアドレスを指定します。指定されなければ、デフォルトでは実行中システム上にあるローカルの unix ソケットを使います。 tcp や udp で port が指定されなければ、デフォルトは 514 になります。以下の例は syslog ドライバを使い、リモートの 192.168.0.42 サーバ上のポート 123 に接続する方法です。
$ docker run --log-driver=syslog --log-opt syslog-address=tcp://192.168.0.42:123
syslog-facility オプションは syslog のファシリティを設定します。デフォルトでは、システムは daemon 値を使います。これを上書きするには、 0 から 23 までの整数か、以下のファシリティ名を指定します。
kernusermaildaemonauthsysloglprnewsuucpcronauthprivftplocal0local1local2local3local4local5local6local7
デフォルトでは、Docker はコンテナ ID の始めの 12 文字だけログ・メッセージにタグ付けします。タグ・フォーマットの記録方式をカスタマイズするには、 log tag オプションのドキュメント をご覧ください。
journald オプション¶
journald ロギング・ドライバは journal の CONTAINER_ID フィールドにコンテナ ID を記録します。ロギング・ドライバの詳細な動作については、 journald ロギング・ドライバ リファレンス・ドキュメントをご覧ください。
gelf オプション¶
GELF ロギングドライバは以下のオプションをサポートしています。
--log-opt gelf-address=udp://host:port
--log-opt tag="database"
--log-opt labels=label1,label2
--log-opt env=env1,env2
gelf-address オプションは、接続先のリモート GELF サーバのアドレスを指定します。現時点では udp が転送用にサポートされており、そのとき port を指定する必要があります。次の例は gelf ドライバで GELF リモートサーバ 192.168.0.42 のポート 12201 に接続します。
$ docker run --log-driver=gelf --log-opt gelf-address=udp://192.168.0.42:12201
デフォルトでは、Docker はコンテナ ID の始めの 12 文字だけログ・メッセージにタグ付けします。タグ・フォーマットの記録方式をカスタマイズするには、 log tag オプションのドキュメント をご覧ください。
label と env オプションが gelf ロギング・ドライバでサポートされています。これは extra フィールドに、冒頭がアンダースコア ( _ ) で始まるキーを追加するものです。
// […]
"_foo": "bar",
"_fizz": "buzz",
// […]
fluentd オプション¶
--log-opt NAME=VALUE フラグを使い、以下の Fluentd ロギング・ドライバのオプションを追加できます。
fluentd-address: 接続先をhost:portの形式で指定。例:localhost:24224tag:fluentdメッセージのタグを指定。
例えば、両方のオプションを指定すると、次のようになります。
docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag=docker.{{.Name}}
コンテナは指定した場所にある Fluentd デーモンに接続できなければ、コンテナは直ちに停止します。このロギング・ドライバの動作に関する詳細情報は fluentd ロギング・ドライバ をご覧ください。
Amaxon CloudWatch Logs オプションの指定¶
Amazon CloudWatch ロギングドライバは、以下のオプションをサポートしています。
--log-opt awslogs-region=<aws_region>
--log-opt awslogs-group=<log_group_name>
--log-opt awslogs-stream=<log_stream_name>
このロギング・ドライバの動作に関する詳細情報は awslogs ロギング・ドライバ をご覧ください。