はじめに
Docker 1.8 から Logging driver に Fluentd が加わるということで心待ちにしていたら、Docker 1.8-rc3 がリリースされていたので待ちきれず試してみた。
※本記事の内容は Docker 1.8-rc3 上で試した内容となるので、リリース版と異なる内容があるかもしれないのでご容赦下さいませ。
追記(2015/08/12 PM 5:15)
1.8 が正式にリリースされていた
アップデート 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"}
参考
- https://github.com/docker/docker/releases
- https://github.com/docker/docker/blob/master/CHANGELOG.md
- https://github.com/docker/docker/releases/tag/v1.8.0-rc3
- https://github.com/docker/docker/pull/12876/commits
- http://blog.treasuredata.com/blog/2015/07/07/collecting-docker-logs-with-fluentd/
- http://blog.treasuredata.com/blog/2015/08/03/5-use-cases-docker-fluentd/
- http://dev.classmethod.jp/cloud/docker-fluentd-logging-driver/
メモ
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 で試してみたい。