ようへいの日々精進XP

よかろうもん

Docker の Logging driver に fluentd が組み込まれるということでリリースを待ちきれずに試してみたメモ

はじめに

Docker 1.8 から Logging driver に Fluentd が加わるということで心待ちにしていたら、Docker 1.8-rc3 がリリースされていたので待ちきれず試してみた。

※本記事の内容は Docker 1.8-rc3 上で試した内容となるので、リリース版と異なる内容があるかもしれないのでご容赦下さいませ。


追記(2015/08/12 PM 5:15)

1.8 が正式にリリースされていた

github.com

アップデート or インストール(Ubuntu

d$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
$
$ curl -sSL https://get.docker.com | sh

確認。

$ docker version
Client:
 Version:      1.8.0
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0d03096
 Built:        Tue Aug 11 16:48:39 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.0
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0d03096
 Built:        Tue Aug 11 16:48:39 UTC 2015
 OS/Arch:      linux/amd64

アップデート(boot2docker on MacOS X

% boot2docker upgrade

以上。

% docker version
Client:
 Version:      1.8.0
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0d03096
 Built:        Tue Aug 11 17:17:40 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.8.0
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0d03096
 Built:        Tue Aug 11 17:17:40 UTC 2015
 OS/Arch:      linux/amd64

boot2docker 環境の場合には localhost の fluentd を指定する方法がパッと思いつかなかったので fluentd コンテナを用意して試した

アプリケーションコンテナで確認

$ fluentd -c fluentd.conf -o debug.log &

$ docker run -d \
  --log-driver=fluentd \
  --log-opt=fluentd-tag="docker.{{.Name}}" \
  --name=web-01 \
  --hostname=web-01 \
  -p 8000:8000 \
inokappa/centos-base /bin/sh -c 'cd /tmp/ && hostname -s > index.html && python -m SimpleHTTPServer'

アクセス。

$ curl localhost:8000
$ curl localhost:8000
$ curl localhost:8000

ログ確認。

    bind 127.0.0.1
  </source>
  <match docker.**>
    type stdout
  </match>
</ROOT>
2015-08-12 17:13:35 +0900 [info]: listening fluent socket on 127.0.0.1:24224
2015-08-12 17:15:52 +0900 docker./web-01: {"log":"172.17.42.1 - - [12/Aug/2015 08:15:52] \"GET / HTTP/1.1\" 200 -","container_id":"03c09390edd69f929b36d84ed3d976cf5260de9495d1d9a76c72b67c20c3e8e5","container_name":"/web-01","source":"stderr"}
2015-08-12 17:15:53 +0900 docker./web-01: {"source":"stderr","log":"172.17.42.1 - - [12/Aug/2015 08:15:53] \"GET / HTTP/1.1\" 200 -","container_id":"03c09390edd69f929b36d84ed3d976cf5260de9495d1d9a76c72b67c20c3e8e5","container_name":"/web-01"}
2015-08-12 17:15:54 +0900 docker./web-01: {"source":"stderr","log":"172.17.42.1 - - [12/Aug/2015 08:15:54] \"GET / HTTP/1.1\" 200 -","container_id":"03c09390edd69f929b36d84ed3d976cf5260de9495d1d9a76c72b67c20c3e8e5","container_name":"/web-01"}

参考


メモ

Docker のバージョンアップ

今回の環境...

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

早速 Docker のバージョンアップ。

curl -sSL https://test.docker.com | sh

確認。

$ docker version
Client:
 Version:      1.8.0-rc3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   ba509ce
 Built:        Fri Aug  7 16:32:40 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.0-rc3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   ba509ce
 Built:        Fri Aug  7 16:32:40 UTC 2015
 OS/Arch:      linux/amd64

docker run

$ docker run --log-driver=fluentd hello-world
Error response from daemon: Cannot start container bd2e485a3d53726ee3700fc4e5a00f16edd14ed32fea79dabdb25982cb511d8a: Failed to initialize logging driver: dial tcp 127.0.0.1:24224: connection refused

まずは fluentd を起動しておく必要がありそう。

fluentd.conf

$ cat << EOT >> fluentd.conf
<source>
  type forward
  port 24224
  bind 127.0.0.1
</source>

<match docker.**>
  type stdout
</match>
EOT

以下のように fluentd を起動する。

fluentd --config fluentd.conf -o debug.log &

起動を確認する。

$ cat debug.log
2015-08-11 12:26:08 +0900 [info]: reading config file path="fluentd.conf"
2015-08-11 12:26:08 +0900 [info]: starting fluentd-0.12.15
2015-08-11 12:26:08 +0900 [info]: gem 'fluentd' version '0.12.15'
2015-08-11 12:26:08 +0900 [info]: adding match pattern="docker.**" type="stdout"
2015-08-11 12:26:08 +0900 [info]: adding source type="forward"
2015-08-11 12:26:08 +0900 [info]: using configuration file: <ROOT>
  <source>
    type forward
    port 24224
    bind 127.0.0.1
  </source>
  <match docker.**>
    type stdout
  </match>
</ROOT>

改めて docker run

docker run --log-driver=fluentd hello-world

以下のように出力されて exit 0 する。

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

debug.log を見てみると...

2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":""}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"source":"stdout","log":"Hello from Docker.","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":"This message shows that your installation appears to be working correctly."}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":""}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":"To generate this message, Docker took the following steps:"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_name":"/goofy_stallman","source":"stdout","log":" 1. The Docker client contacted the Docker daemon.","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"source":"stdout","log":" 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":" 3. The Docker daemon created a new container from that image which runs the"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":"    executable that produces the output you are currently reading."}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"log":" 4. The Docker daemon streamed that output to the Docker client, which sent it","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"source":"stdout","log":"    to your terminal.","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"log":"","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_name":"/goofy_stallman","source":"stdout","log":"To try something more ambitious, you can run an Ubuntu container with:","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_name":"/goofy_stallman","source":"stdout","log":" $ docker run -it ubuntu bash","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_name":"/goofy_stallman","source":"stdout","log":"","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":"Share images, automate workflows, and more with a free Docker Hub account:"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"log":" https://hub.docker.com","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout","log":""}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"source":"stdout","log":"For more examples and ideas, visit:","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"log":" https://docs.docker.com/userguide/","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman","source":"stdout"}
2015-08-11 12:29:51 +0900 docker.ad73aa2fada8: {"source":"stdout","log":"","container_id":"ad73aa2fada824ac6651a934dd58602bca4a963ecd8bef3b4d394707cf48ad84","container_name":"/goofy_stallman"}

上記のように標準出力に出力されたメッセージが JSON 形式で出力されている。

も少し弄る

--log-opt= でオプションを指定出来るようなのでタグを指定してみる。

$ docker run --log-driver=fluentd --log-opt=fluentd-tag=docker.{{.Name}} --name=foo hello-world

以下のようにログが出力された。

2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":""}
2015-08-11 12:35:02 +0900 docker./foo: {"container_name":"/foo","source":"stdout","log":"Hello from Docker.","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":"This message shows that your installation appears to be working correctly.","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":"","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"log":"To generate this message, Docker took the following steps:","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":" 1. The Docker client contacted the Docker daemon."}
2015-08-11 12:35:02 +0900 docker./foo: {"log":" 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":" 3. The Docker daemon created a new container from that image which runs the","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":"    executable that produces the output you are currently reading."}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":" 4. The Docker daemon streamed that output to the Docker client, which sent it"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":"    to your terminal.","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":""}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":"To try something more ambitious, you can run an Ubuntu container with:"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":" $ docker run -it ubuntu bash","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":""}
2015-08-11 12:35:02 +0900 docker./foo: {"log":"Share images, automate workflows, and more with a free Docker Hub account:","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":" https://hub.docker.com"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":"","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}
2015-08-11 12:35:02 +0900 docker./foo: {"log":"For more examples and ideas, visit:","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout"}
2015-08-11 12:35:02 +0900 docker./foo: {"container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo","source":"stdout","log":" https://docs.docker.com/userguide/"}
2015-08-11 12:35:02 +0900 docker./foo: {"source":"stdout","log":"","container_id":"1ec93be3fd77d39ce63bc9f426e1a9f4fb449030bb38ea067479c71911d6301c","container_name":"/foo"}

コンテナ名に / が含まれるので / 付きのタグになってしまっているが、タグの Prefix の一部としてコンテナ名が設定出来ている。

尚、--log-opt で指定出来る項目は以下の通りのようだ(正式の内容についてはリリース版を確認したい)。

  • fluentd-address(Default: localhost:24224)
  • fluentd-tag({{.ID}} / {{.FullID}} / {{.Name}} が指定出来るようだ)

ためしに以下のようにコンテナを起動していみる。

docker run \
  --log-driver=fluentd \
  --log-opt=fluentd-address=127.0.0.1:24224 \
  --log-opt=fluentd-tag=docker.{{.FullID}} \
  --name=foo hello-world

以下のようタグにコンテナ ID が Prefix として追加されている。

2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout","log":""}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"container_name":"/foo","source":"stdout","log":"To try something more ambitious, you can run an Ubuntu container with:","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout","log":" $ docker run -it ubuntu bash"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"source":"stdout","log":"","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"log":"Share images, automate workflows, and more with a free Docker Hub account:","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout","log":" https://hub.docker.com"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"log":"","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"log":"For more examples and ideas, visit:","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"log":" https://docs.docker.com/userguide/","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005","container_name":"/foo","source":"stdout"}
2015-08-11 12:45:58 +0900 docker.88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005: {"container_name":"/foo","source":"stdout","log":"","container_id":"88a6235da02f7cd94d0e680738e6a0e13dd9695f899456a4ad252bcd6d7dd005"}

おお。

アプリケーションのログを...

簡単 web サーバーを起動して出力されるログを見てみたいので以下のようにコンテナを起動。

docker run -d \
  --log-driver=fluentd \
  --log-opt=fluentd-tag="docker.{{.Name}}" \
  --name=web-01 \
  --hostname=web-01 \
  -p 8000:8000 \
inokappa/centos-base /bin/sh -c 'cd /tmp/ && hostname -s > index.html && python -m SimpleHTTPServer'

起動したらコンテナに curl でアクセス。

curl localhost:8000

以下のように出力された。

$ tail debug.log | grep web-01
2015-08-11 13:32:15 +0900 docker./web-01: {"container_id":"67509fa5d1615a1d01295945f52eec51ef1991a5a88463523fe84c6cb8878458","container_name":"/web-01","source":"stderr","log":"172.17.42.1 - - [11/Aug/2015 04:32:15] \"GET / HTTP/1.1\" 200 -"}
2015-08-11 13:32:26 +0900 docker./web-01: {"log":"172.17.42.1 - - [11/Aug/2015 04:32:26] \"GET / HTTP/1.1\" 200 -","container_id":"67509fa5d1615a1d01295945f52eec51ef1991a5a88463523fe84c6cb8878458","container_name":"/web-01","source":"stderr"}
2015-08-11 13:32:27 +0900 docker./web-01: {"log":"172.17.42.1 - - [11/Aug/2015 04:32:27] \"GET / HTTP/1.1\" 200 -","container_id":"67509fa5d1615a1d01295945f52eec51ef1991a5a88463523fe84c6cb8878458","container_name":"/web-01","source":"stderr"}

おお。アクセスログが出力されている。Apache とか試した方がより実感が湧くかもしれない。


駆け足で

fluentd の log driver を試してみた

従来はログ収集用のコンテナを用意して docker link させたりとコンテナ内のアプリケーションログ運用について試行錯誤があったかと思うが、--log-driver オプションで外部へのログ送信を Docker 側で受け持ってくれるというのは少なくとも自分は嬉しい機能(--log-driver オプション自体は Docker 1.6 から組み込まれている)だと思うし、送信先として fluentd が選べるようになることで、送信後のログの取り回し等が柔軟に選択出来るので、既に構築されている fluentd によるログの収集環境への組み込みも楽になることを期待したい。

最後に --log-driver への fluentd 組み込みに尽力された @tagomoris さん、エンジニアの皆さん、お疲れ様でした。有難う御座いましたm(__)m

次は

正式に 1.8 がリリースされたら Amazon ECS で試してみたい。