Fluentd docker image
This container image is to create endpoint to collect logs on your host.
docker run -d -p 24224:24224 -v /data:/fluentd/log fluent/fluentd
Default configurations are to:
- listen port
24224for fluentd forward protocol
- store logs with tag
- store all other logs into
/fluentd/log/data.*.log(and symlink data.log)
This image uses Alpine Linux. Since v0.12.26, we separate tags into
Ubuntu based image
This is deprecated. You can use
ubuntu-base tag for your build but we don't maintain ubuntu based image with latest fluentd release.
We recommend to fork
ubuntu/Dockerfile for your case.
Configurable ENV variables
Environment variable below are configurable to control how to execute fluentd process:
It's for configuration file name, specified for
If you want to use your own configuration file (without any optional plugins), you can use it over this ENV variable and -v option.
- write configuration file with filename
-v /path/to/dir:/fluentd/etcto share
/path/to/dir/yours.confin container, and
-e FLUENTD_CONF=yours.confto read it
Use this variable to specify other options, like
How to build your own image
It is very easy to use this image as base image. Write your
Dockerfile and configuration files, and/or your own plugin files if needed.
FROM fluent/fluentd:latest MAINTAINER your_name <...> USER fluent WORKDIR /home/fluent ENV PATH /home/fluent/.gem/ruby/2.2.0/bin:$PATH RUN gem install fluent-plugin-secure-forward EXPOSE 24284 CMD fluentd -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
Files below are automatically included in build process:
fluent.conf: used instead of default file
plugins/*: copied into
/fluentd/pluginsand loaded at runtime
Note: Default image removed several apk packages, build-base and ruby-dev, to keep docker image small. If you want to install the plugin which depends on native extension gems, needs to re-install these packages to build it.
docker run --log-driver=fluentd --log-opt fluentd-address=192.168.0.1:24224 IMAGE echo "Hello Fluentd"
Should produce a log-file with
Hello Fluentd, depending on you
The docker logscommand is available only for the json-file and journald logging drivers.
This start script helped me to finally make plugin work:
#!/bin/sh export PATH=/home/fluent/.gem/ruby/2.3.0/bin:$PATH export GEM_PATH=/home/fluent/.gem/ruby/2.3.0:$GEM_$PATH fluent-gem install fluent-plugin-elasticsearch exec fluentd -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
Doesn't the logging driver work with docker-compose?
I get the following error:
"logs" command is supported only for "json-file" and "journald" logging drivers (got: fluentd)
Shouldn't this container print log messages to
stdout due to the stdout_filter? For me the log messages end up in the files in
/fluentd/log/. But except the output of fluentd itself nothing is written to
stdout in the container.
I'm not familiar with
fluentd, maybe I understand something wrong?
Thanks for the comment. I just added tags. I thought DockerHub builds the image for each github tag automatically...
+1 for tagging
I suggest to add version-specific tags. Dockerfile on this page is out of data and it doesn't show the latest version of fluentd installed in the image.
Can you tag specific versions (not just 'latest')? Thanks!