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 で動かしてみます。
動かしてみた様子
- 基本的に Fluentd の Docker イメージのリポジトリの記載にしたがって動かします
- まずコンテナのFluentdがログを出力するためのディレクトリをホスト側に作ります。ここでは適当に
fluentd-data
ディレクトリを作成しておきます。
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 を使うと簡単にミドルウェアが試せていいですね...