$ 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
$ 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 > fluentd.conf
type forward
port 24224
bind 127.0.0.1
type stdout
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:
type forward
port 24224
bind 127.0.0.1
type stdout
改めて 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"}