Running Kibana on Docker

edit

Running Kibana on Docker

edit

Docker images for Kibana are available from the Elastic Docker registry. The base image is centos:7.

A list of all published Docker images and tags can be found at www.docker.elastic.co. The source code can be found on GitHub.

Image types

edit

The images are available in two different configurations or "flavors". The x-pack flavor, which is the default, ships with X-Pack features pre-installed. The oss flavor does not include X-Pack, and contains only open source Kibana.

X-Pack is pre-installed in the default image. With X-Pack installed, Kibana expects to connect to an Elasticsearch cluster that is also running X-Pack.

Pulling the image

edit

Obtaining Kibana for Docker is as simple as issuing a docker pull command against the Elastic Docker registry.

Docker images can be retrieved with the following commands:

docker pull docker.elastic.co/kibana/kibana:6.2.4
docker pull docker.elastic.co/kibana/kibana-oss:6.2.4

Configuring Kibana on Docker

edit

The Docker images provide several methods for configuring Kibana. The conventional approach is to provide a kibana.yml file as described in Configuring Kibana, but it’s also possible to use environment variables to define settings.

Bind-mounted configuration

edit

One way to configure Kibana on Docker is to provide kibana.yml via bind-mounting. With docker-compose, the bind-mount can be specified like this:

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:6.2.4
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml

Environment variable configuration

edit

Under Docker, Kibana can be configured via environment variables. When the container starts, a helper process checks the environment for variables that can be mapped to Kibana command-line arguments.

For compatibility with container orchestration systems, these environment variables are written in all capitals, with underscores as word separators. The helper translates these names to valid Kibana setting names.

Some example translations are shown here:

Table 1. Example Docker Environment Variables

Environment Variable

Kibana Setting

SERVER_NAME

server.name

KIBANA_DEFAULTAPPID

kibana.defaultAppId

XPACK_MONITORING_ENABLED

xpack.monitoring.enabled

In general, any setting listed in Configuring Kibana or X-Pack Settings can be configured with this technique.

These variables can be set with docker-compose like this:

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:6.2.4
    environment:
      SERVER_NAME: kibana.example.org
      ELASTICSEARCH_URL: http://elasticsearch.example.org

Since environment variables are translated to CLI arguments, they take precedence over settings configured in kibana.yml.

Docker defaults

edit

The following settings have different default values when using the Docker images:

server.name

kibana

server.host

"0"

elasticsearch.url

http://elasticsearch:9200

In the x-pack image, the following additional defaults are also set:

elasticsearch.username

elastic

elasticsearch.password

changeme

xpack.monitoring.ui.container.elasticsearch.enabled

true

These settings are defined in the default kibana.yml. They can be overridden with a custom kibana.yml or via environment variables.

If replacing kibana.yml with a custom version, be sure to copy the above defaults to the custom file if you want to retain them. If not, they will be "masked" by the new file.