Introducing our new CEO Don Johnson - Read More

bitnami/elasticsearch

Verified Publisher

By VMware

Updated 2 days ago

Bitnami container image for Elasticsearch

Image
Databases & Storage
Security
Web Analytics
79

100M+

Bitnami Elasticsearch Stack

What is Elasticsearch?

Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications.

Overview of Elasticsearch Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.

TL;DR

docker run --name elasticsearch bitnami/elasticsearch:latest

You can find the available configuration options in the Environment Variables section.

Why use Bitnami Images?

  • Bitnami closely tracks upstream source changes and promptly publishes new versions of this image using our automated systems.
  • With Bitnami images the latest bug fixes and features are available as soon as possible.
  • Bitnami containers, virtual machines and cloud images use the same components and configuration approach - making it easy to switch between formats based on your project needs.
  • All our images are based on minideb -a minimalist Debian based container image that gives you a small base container image and the familiarity of a leading Linux distribution- or scratch -an explicitly empty image-.
  • All Bitnami images available in Docker Hub are signed with Notation. Check this post to know how to verify the integrity of the images.
  • Bitnami container images are released on a regular basis with the latest distribution packages available.

Looking to use Elasticsearch in production? Try VMware Tanzu Application Catalog, the commercial edition of the Bitnami catalog.

How to deploy Elasticsearch in Kubernetes?

Deploying Bitnami applications as Helm Charts is the easiest way to get started with our applications on Kubernetes. Read more about the installation in the Bitnami Elasticsearch Chart GitHub repository.

Bitnami containers can be used with Kubeapps for deployment and management of Helm Charts in clusters.

Why use a non-root container?

Non-root container images add an extra layer of security and are generally recommended for production environments. However, because they run as a non-root user, privileged tasks are typically off-limits. Learn more about non-root containers in our docs.

Only latest stable branch maintained in the free Bitnami catalog

Starting December 10th 2024, only the latest stable branch of any container will receive updates in the free Bitnami catalog. To access up-to-date releases for all upstream-supported branches, consider upgrading to Bitnami Premium. Previous versions already released will not be deleted. They are still available to pull from DockerHub.

Please check the Bitnami Premium page in our partner Arrow Electronics for more information.

Supported tags and respective Dockerfile links

Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags in our documentation page.

You can see the equivalence between the different tags by taking a look at the tags-info.yaml file present in the branch folder, i.e bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml.

Subscribe to project updates by watching the bitnami/containers GitHub repo.

Get this image

The recommended way to get the Bitnami Elasticsearch Docker Image is to pull the prebuilt image from the Docker Hub Registry.

docker pull bitnami/elasticsearch:latest

To use a specific version, you can pull a versioned tag. You can view the list of available versions in the Docker Hub Registry.

docker pull bitnami/elasticsearch:[TAG]

If you wish, you can also build the image yourself by cloning the repository, changing to the directory containing the Dockerfile and executing the docker build command. Remember to replace the APP, VERSION and OPERATING-SYSTEM path placeholders in the example command below with the correct values.

git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .

Persisting your application

If you remove the container all your data will be lost, and the next time you run the image the application will be reinitialized. To avoid this loss of data, you should mount a volume that will persist even after the container is removed.

For persistence you should mount a directory at the /bitnami path. If the mounted directory is empty, it will be initialized on the first run.

docker run \
    -v /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data \
    bitnami/elasticsearch:latest

or by making a minor change to the docker-compose.yml file present in this repository:

elasticsearch:
  ...
  volumes:
    - /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data
  ...

NOTE: As this is a non-root container, the mounted files and directories must have the proper permissions for the UID 1001.

It is also possible to use multiple volumes for data persistence by using the ELASTICSEARCH_DATA_DIR_LIST environment variable:

elasticsearch:
  ...
  volumes:
    - /path/to/elasticsearch-data-persistence-1:/elasticsearch/data-1
    - /path/to/elasticsearch-data-persistence-2:/elasticsearch/data-2
  environment:
    - ELASTICSEARCH_DATA_DIR_LIST=/elasticsearch/data-1,/elasticsearch/data-2
  ...

Connecting to other containers

Using Docker container networking, an Elasticsearch server running inside a container can easily be accessed by your application containers.

Containers attached to the same network can communicate with each other using the container name as the hostname.

Using the Command Line

Step 1: Create a network

docker network create app-tier --driver bridge

Step 2: Launch the Elasticsearch server instance

Use the --network app-tier argument to the docker run command to attach the Elasticsearch container to the app-tier network.

docker run -d --name elasticsearch-server \
    --network app-tier \
    bitnami/elasticsearch:latest

Step 3: Launch your application container

docker run -d --name myapp \
    --network app-tier \
    YOUR_APPLICATION_IMAGE

IMPORTANT:

  1. Please update the YOUR_APPLICATION_IMAGE_ placeholder in the above snippet with your application image
  2. In your application container, use the hostname elasticsearch-server to connect to the Elasticsearch server
Using a Docker Compose file

When not specified, Docker Compose automatically sets up a new network and attaches all deployed services to that network. However, we will explicitly define a new bridge network named app-tier. In this example we assume that you want to connect to the Elasticsearch server from your own custom application image which is identified in the following snippet by the service name myapp.

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  elasticsearch:
    image: 'bitnami/elasticsearch:latest'
    networks:
      - app-tier
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - app-tier

IMPORTANT:

  1. Please update the YOUR_APPLICATION_IMAGE_ placeholder in the above snippet with your application image
  2. In your application container, use the hostname elasticsearch to connect to the Elasticsearch server

Launch the containers using:

docker-compose up -d

Configuration

Environment variables

Customizable environment variables

NameDescriptionDefault Value
ELASTICSEARCH_CERTS_DIRPath to certificates folder.${DB_CONF_DIR}/certs
ELASTICSEARCH_DATA_DIR_LISTComma, semi-colon or space separated list of directories to use for data storagenil
ELASTICSEARCH_BIND_ADDRESSElasticsearch bind addressnil
ELASTICSEARCH_ADVERTISED_HOSTNAMEElasticsearch advertised hostname, used for publishnil
ELASTICSEARCH_CLUSTER_HOSTSElasticsearch cluster hostsnil
ELASTICSEARCH_CLUSTER_MASTER_HOSTSElasticsearch cluster master hostsnil
ELASTICSEARCH_CLUSTER_NAMEElasticsearch cluster namenil
ELASTICSEARCH_HEAP_SIZEElasticsearch heap size1024m
ELASTICSEARCH_MAX_ALLOWED_MEMORY_PERCENTAGEElasticsearch maximum allowed memory percentage100
ELASTICSEARCH_MAX_ALLOWED_MEMORYElasticsearch maximum allowed memory amount (in megabytes)nil
ELASTICSEARCH_MAX_TIMEOUTElasticsearch maximum init timeout60
ELASTICSEARCH_LOCK_ALL_MEMORYSets bootstrap.memory_lock parameterno
ELASTICSEARCH_DISABLE_JVM_HEAP_DUMPDisable JVM Heap dumpno
ELASTICSEARCH_DISABLE_GC_LOGSDisable GC logsno
ELASTICSEARCH_IS_DEDICATED_NODEIf false, Elasticsearch will be configured with all the roles, deploy as dedicated node using DB_NODE_ROLES.no
ELASTICSEARCH_MINIMUM_MASTER_NODESMinimum number of master nodesnil
ELASTICSEARCH_NODE_NAMEElasticsearch node namenil
ELASTICSEARCH_FS_SNAPSHOT_REPO_PATHElasticsearch repo path to restore snapshots from system repositorynil
ELASTICSEARCH_NODE_ROLESComma-separated list of Elasticsearch roles. If empty, will be deployed as a coordinating-only node.nil
ELASTICSEARCH_PLUGINSList of Elasticsearch plugins to activatenil
ELASTICSEARCH_TRANSPORT_PORT_NUMBERElasticsearch node port number9300
ELASTICSEARCH_HTTP_PORT_NUMBERElasticsearch port9200
ELASTICSEARCH_ENABLE_SECURITYEnable Elasticsearch security settings.false
ELASTICSEARCH_PASSWORDPassword for "elastic" user.bitnami
ELASTICSEARCH_TLS_VERIFICATION_MODEElasticsearch TLS verification mode in transport layer.full
ELASTICSEARCH_TLS_USE_PEMConfigure Security settings using PEM certificates.false
ELASTICSEARCH_KEYSTORE_PASSWORDPassword for the Elasticsearch keystore containing the certificates or password-protected PEM key.nil
ELASTICSEARCH_TRUSTSTORE_PASSWORDPassword for the Elasticsearch truststore.nil
ELASTICSEARCH_KEY_PASSWORDPassword for the Elasticsearch node PEM key.nil
ELASTICSEARCH_KEYSTORE_LOCATIONPath to Keystore${DB_CERTS_DIR}/elasticsearch.keystore.jks
ELASTICSEARCH_TRUSTSTORE_LOCATIONPath to Truststore.${DB_CERTS_DIR}/elasticsearch.truststore.jks
ELASTICSEARCH_NODE_CERT_LOCATIONPath to PEM node certificate.${DB_CERTS_DIR}/tls.crt
ELASTICSEARCH_NODE_KEY_LOCATIONPath to PEM node key.${DB_CERTS_DIR}/tls.key
ELASTICSEARCH_CA_CERT_LOCATIONPath to CA certificate.${DB_CERTS_DIR}/ca.crt
ELASTICSEARCH_SKIP_TRANSPORT_TLSSkips transport layer TLS configuration. Useful when deploying single-node clusters.false
ELASTICSEARCH_TRANSPORT_TLS_USE_PEMConfigure transport layer TLS settings using PEM certificates.$DB_TLS_USE_PEM
ELASTICSEARCH_TRANSPORT_TLS_KEYSTORE_PASSWORDPassword for the Elasticsearch transport layer TLS keystore containing the certificates or password-protected PEM key.$DB_KEYSTORE_PASSWORD
ELASTICSEARCH_TRANSPORT_TLS_TRUSTSTORE_PASSWORDPassword for the Elasticsearch transport layer TLS truststore.$DB_TRUSTSTORE_PASSWORD
ELASTICSEARCH_TRANSPORT_TLS_KEY_PASSWORDPassword for the Elasticsearch transport layer TLS node PEM key.$DB_KEY_PASSWORD
ELASTICSEARCH_TRANSPORT_TLS_KEYSTORE_LOCATIONPath to Keystore for transport layer TLS.$DB_KEYSTORE_LOCATION
ELASTICSEARCH_TRANSPORT_TLS_TRUSTSTORE_LOCATIONPath to Truststore for transport layer TLS.$DB_TRUSTSTORE_LOCATION
ELASTICSEARCH_TRANSPORT_TLS_NODE_CERT_LOCATIONPath to PEM node certificate for transport layer TLS.$DB_NODE_CERT_LOCATION
ELASTICSEARCH_TRANSPORT_TLS_NODE_KEY_LOCATIONPath to PEM node key for transport layer TLS.$DB_NODE_KEY_LOCATION
ELASTICSEARCH_TRANSPORT_TLS_CA_CERT_LOCATIONPath to CA certificate for transport layer TLS.$DB_CA_CERT_LOCATION
ELASTICSEARCH_ENABLE_REST_TLSEnable TLS encryption for REST API communications.true
ELASTICSEARCH_HTTP_TLS_USE_PEMConfigure HTTP TLS settings using PEM certificates.$DB_TLS_USE_PEM
ELASTICSEARCH_HTTP_TLS_KEYSTORE_PASSWORDPassword for the Elasticsearch HTTP TLS keystore containing the certificates or password-protected PEM key.$DB_KEYSTORE_PASSWORD
ELASTICSEARCH_HTTP_TLS_TRUSTSTORE_PASSWORDPassword for the Elasticsearch HTTP TLS truststore.$DB_TRUSTSTORE_PASSWORD
ELASTICSEARCH_HTTP_TLS_KEY_PASSWORDPassword for the Elasticsearch HTTP TLS node PEM key.$DB_KEY_PASSWORD
ELASTICSEARCH_HTTP_TLS_KEYSTORE_LOCATIONPath to Keystore for HTTP TLS.$DB_KEYSTORE_LOCATION
ELASTICSEARCH_HTTP_TLS_TRUSTSTORE_LOCATIONPath to Truststore for HTTP TLS.$DB_TRUSTSTORE_LOCATION
ELASTICSEARCH_HTTP_TLS_NODE_CERT_LOCATIONPath to PEM node certificate for HTTP TLS.$DB_NODE_CERT_LOCATION
ELASTICSEARCH_HTTP_TLS_NODE_KEY_LOCATIONPath to PEM node key for HTTP TLS.$DB_NODE_KEY_LOCATION
ELASTICSEARCH_HTTP_TLS_CA_CERT_LOCATIONPath to CA certificate for HTTP TLS.$DB_CA_CERT_LOCATION
ELASTICSEARCH_ENABLE_FIPS_MODEEnables FIPS mode of operationfalse
ELASTICSEARCH_KEYSComma-separated list of key=value to be added to the Elasticsearch keystorenil
ELASTICSEARCH_ACTION_DESTRUCTIVE_REQUIRES_NAMEEnable action destructive requires namenil

Read-only environment variables

NameDescriptionValue
DB_FLAVORDatabase flavor. Valid values: elasticsearch or opensearch.elasticsearch
ELASTICSEARCH_VOLUME_DIRPersistence base directory/bitnami/elasticsearch
ELASTICSEARCH_BASE_DIRElasticsearch installation directory/opt/bitnami/elasticsearch
ELASTICSEARCH_CONF_DIRElasticsearch configuration directory${DB_BASE_DIR}/config
ELASTICSEARCH_DEFAULT_CONF_DIRElasticsearch default configuration directory${DB_BASE_DIR}/config.default
ELASTICSEARCH_LOGS_DIRElasticsearch logs directory${DB_BASE_DIR}/logs
ELASTICSEARCH_PLUGINS_DIRElasticsearch plugins directory${DB_BASE_DIR}/plugins
ELASTICSEARCH_DEFAULT_PLUGINS_DIRElasticsearch default plugins directory${DB_BASE_DIR}/plugins.default
ELASTICSEARCH_DATA_DIRElasticsearch data directory${DB_VOLUME_DIR}/data
ELASTICSEARCH_TMP_DIRElasticsearch temporary directory${DB_BASE_DIR}/tmp
ELASTICSEARCH_BIN_DIRElasticsearch executables directory${DB_BASE_DIR}/bin
ELASTICSEARCH_MOUNTED_PLUGINS_DIRDirectory where plugins are mounted${DB_VOLUME_DIR}/plugins
ELASTICSEARCH_CONF_FILEPath to Elasticsearch configuration file${DB_CONF_DIR}/elasticsearch.yml
ELASTICSEARCH_LOG_FILEPath to the Elasticsearch log file${DB_LOGS_DIR}/elasticsearch.log
ELASTICSEARCH_PID_FILEPath to the Elasticsearch pid file${DB_TMP_DIR}/elasticsearch.pid
ELASTICSEARCH_INITSCRIPTS_DIRPath to the Elasticsearch container init scripts directory/docker-entrypoint-initdb.d
ELASTICSEARCH_DAEMON_USERElasticsearch system userelasticsearch
ELASTICSEARCH_DAEMON_GROUPElasticsearch system groupelasticsearch

Note: the README for this container is longer than the DockerHub length limit of 25000, so it has been trimmed. The full README can be found at https://github.com/bitnami/containers/blob/main/bitnami/elasticsearch/README.md

Docker Pull Command

docker pull bitnami/elasticsearch
Bitnami