Fluentd の Docker イメージを動かした際のメモ

タイトル通り Fluentd の Docker イメージを動かした際のメモです。

背景

Fluentd を使って動作確認を行う際は CentOS などの Linux に td-agent を入れていました。ただ、毎回環境構築のたびに td-agent をインストールするのも...と思い、Fluentd の Docker イメージが用意されていたので動かしてみました。

環境情報は以下のとおりです

  • OS: OS X 10.11.6 (El Capitan)
  • Docker: 1.11.2
  • Docker 実行環境: Boot2Docker

最近、Docker for Mac がリリースされたようですが、ここでは手を抜いて Boot2Docker 上の Docker で動かしてみます。

動かしてみた様子

docker@default:~$ mkdir fluentd-data
docker@default:~$ ls -ld fluentd-data/
drwxr-sr-x    2 docker   staff           40 Aug 29 14:41 fluentd-data//
docker@default:~$
  • 次に docker run でコンテナを動かします。初回のため、イメージを docker hub からダウンロードするので少し時間がかかります。
docker@default:~$ docker run -d -p 24224:24224 -v /home/docker/fluentd-data:/fluentd/log fluent/fluentd
Unable to find image 'fluent/fluentd:latest' locally
latest: Pulling from fluent/fluentd
e110a4a17941: Pull complete
791f4592c10e: Pull complete
f1d1dbab7f4c: Pull complete
b61b499b1dce: Pull complete
9dfbbfad7373: Pull complete
71870c7b2e9c: Pull complete
8f486fa7e1d8: Pull complete
95cccbc5dfae: Pull complete
Digest: sha256:a8342c68b36709853c7335374959dba4466259c80218d6cbd740634cf25453e0
Status: Downloaded newer image for fluent/fluentd:latest
d252f2f8f712b7776fdb4cd43aa7e550c985b147ba397f3cb1ef43b6e7305778
docker@default:~$
  • docker ps で実際に動いているか確認
docker@default:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
d252f2f8f712        fluent/fluentd      "/bin/sh -c 'exec flu"   55 seconds ago      Up 55 seconds       5140/tcp, 0.0.0.0:24224->24224/tcp   dreamy_noether
docker@default:~$
  • 動いているみたいです。docker run--name オプションで適当に名前をつけておけばよかったです...
  • これだけだと何もわからないのでコンテナにログインして様子を見てみます。
docker@default:~$ docker exec -it dreamy_noether /bin/sh
~ $ ls
~ $ which fluent-cat
/usr/bin/fluent-cat
~ $
  • fluent-cat コマンドのパスが通っていたので実際にデータを投げてみます。リポジトリに記載の通り、docker.** タグをつけると /fluentd/log/docker.log に出力される設定になっているようです。
~ $ echo '{"foo":"bar"}' | fluent-cat docker.test
~ $ cat /fluentd/log/docker.log
20160829T145028+0000       docker.test     {"foo":"bar"}
~ $
  • 確かに出力されました。docker のホスト側にもちゃんと出力されているようです。
~ $ exit
docker@default:~$ cat fluentd-data/docker.log
docker@default:~$ ls fluentd-data/
docker.20160829.b53b3709508ccd9c0.log  docker.log
docker@default:~$

まとめ

  • 簡単ではありますが、Fluentd の Docker イメージを動かしてみました
  • このイメージを元に Dockerfile を書けば独自のイメージを簡単に作れるかもしれません
  • Docker を使うと簡単にミドルウェアが試せていいですね...