From 44dd8c3b78c2976c1cd234b96bbb53a09f773e22 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 7 Oct 2019 19:47:26 -0700 Subject: [PATCH 01/11] [DOCS] Edited Docker install & tweaked Docker compose file. --- docs/reference/redirects.asciidoc | 3 + docs/reference/setup/install/docker.asciidoc | 186 ++++++++++--------- 2 files changed, 101 insertions(+), 88 deletions(-) diff --git a/docs/reference/redirects.asciidoc b/docs/reference/redirects.asciidoc index b7e5471d9e163..ed44928273492 100644 --- a/docs/reference/redirects.asciidoc +++ b/docs/reference/redirects.asciidoc @@ -920,3 +920,6 @@ See <>. See <>. +[role="exclude",id="docker-cli-run"] + +See <>. diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index 7a2a751b07da1..3f19a6b9a38cc 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -41,11 +41,8 @@ https://www.docker.elastic.co[www.docker.elastic.co]. endif::[] -[[docker-cli-run]] -==== Running {es} from the command line - [[docker-cli-run-dev-mode]] -===== Development mode +==== Starting a single node cluster with Docker ifeval::["{release-state}"=="unreleased"] @@ -55,75 +52,25 @@ endif::[] ifeval::["{release-state}"!="unreleased"] -{es} can be quickly started for development or testing use with the following command: +To start a single-node cluster {es} for development or testing, specify +<> to bypass the <>: ["source","sh",subs="attributes"] -------------------------------------------- docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" {docker-image} -------------------------------------------- -Note the use of <> that allows bypassing -the <> in a single-node development cluster. - endif::[] -[[docker-cli-run-prod-mode]] -===== Production mode - -[[docker-prod-prerequisites]] -[IMPORTANT] -========================= - -The `vm.max_map_count` kernel setting needs to be set to at least `262144` for -production use. Depending on your platform: - -* Linux -+ --- -The `vm.max_map_count` setting should be set permanently in `/etc/sysctl.conf`: -[source,sh] --------------------------------------------- -$ grep vm.max_map_count /etc/sysctl.conf -vm.max_map_count=262144 --------------------------------------------- - -To apply the setting on a live system type: `sysctl -w vm.max_map_count=262144` --- - -* macOS with https://docs.docker.com/engine/installation/mac/#/docker-for-mac[Docker for Mac] -+ --- -The `vm.max_map_count` setting must be set within the xhyve virtual machine: +[[docker-compose-file]] +==== Starting a multi-node cluster with Docker compose -["source","sh"] --------------------------------------------- -$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty --------------------------------------------- +The following Docker compose file brings up a three-node {es} cluster. +Node `es01` listens on `localhost:9200` and `es02` and `es03` talk to `es01` over a Docker network. -Just press enter and configure the `sysctl` setting as you would for Linux: - -["source","sh"] --------------------------------------------- -sysctl -w vm.max_map_count=262144 --------------------------------------------- --- - -* Windows and macOS with https://www.docker.com/products/docker-toolbox[Docker Toolbox] -+ --- -The `vm.max_map_count` setting must be set via docker-machine: - -["source","txt"] --------------------------------------------- -docker-machine ssh -sudo sysctl -w vm.max_map_count=262144 --------------------------------------------- --- -========================= - -The following example brings up a cluster comprising two {es} nodes. -To bring up the cluster, use the -<> and just type: +The https://docs.docker.com/engine/tutorials/dockervolumes[Docker named volumes] +`esdata01`, `esdata02`, and `esdata03` store the node data directories so the data persists across restarts. +If they don't already exist, `docker-compose` creates them when you bring up the cluster. ifeval::["{release-state}"=="unreleased"] @@ -134,6 +81,8 @@ endif::[] ifeval::["{release-state}"!="unreleased"] +To bring up the cluster with <>, run: + ["source","sh"] -------------------------------------------- docker-compose up @@ -143,26 +92,12 @@ endif::[] [NOTE] `docker-compose` is not pre-installed with Docker on Linux. -Instructions for installing it can be found on the -https://docs.docker.com/compose/install/#install-using-pip[Docker Compose webpage]. - -The node `es01` listens on `localhost:9200` while `es02` -talks to `es01` over a Docker network. - -This example also uses -https://docs.docker.com/engine/tutorials/dockervolumes[Docker named volumes], -called `esdata01` and `esdata02` which will be created if not already present. +For installation instructions, see +https://docs.docker.com/compose/install[Install Compose on Linux] on docs.docker.com. [[docker-prod-cluster-composefile]] -`docker-compose.yml`: -ifeval::["{release-state}"=="unreleased"] - -WARNING: Version {version} of {es} has not yet been released, so a -`docker-compose.yml` is not available for this version. - -endif::[] - ifeval::["{release-state}"!="unreleased"] +`docker-compose.yml`: ["source","yaml",subs="attributes"] -------------------------------------------- version: '2.2' @@ -172,8 +107,8 @@ services: container_name: es01 environment: - node.name=es01 - - discovery.seed_hosts=es02 - - cluster.initial_master_nodes=es01,es02 + - discovery.seed_hosts=es02,es03 + - cluster.initial_master_nodes=es01,es02,es03 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" @@ -192,8 +127,8 @@ services: container_name: es02 environment: - node.name=es02 - - discovery.seed_hosts=es01 - - cluster.initial_master_nodes=es01,es02 + - discovery.seed_hosts=es01,es03 + - cluster.initial_master_nodes=es01,es02,es03 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" @@ -205,24 +140,99 @@ services: - esdata02:/usr/share/elasticsearch/data networks: - esnet + es03: + image: {docker-image} + container_name: es03 + environment: + - node.name=es03 + - discovery.seed_hosts=es01,es02 + - cluster.initial_master_nodes=es01,es02,es03 + - cluster.name=docker-cluster + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - esdata03:/usr/share/elasticsearch/data + networks: + - esnet volumes: esdata01: driver: local esdata02: driver: local + esdata03: + driver: local networks: esnet: -------------------------------------------- endif::[] -To stop the cluster, type `docker-compose down`. Data volumes will persist, -so it's possible to start the cluster again with the same data using -`docker-compose up`. -To destroy the cluster **and the data volumes**, just type +To stop the cluster, run `docker-compose down`. +The data in the Docker volumes is preserved and loaded when when you restart the cluster with `docker-compose up`. +To **delete the data volumes** when you bring down the cluster, specify the `-v` option: `docker-compose down -v`. +[[docker-cli-run-prod-mode]] +==== Using the Docker images in production + +[[docker-prod-prerequisites]] +[IMPORTANT] +========================= + +The `vm.max_map_count` kernel setting needs to be set to at least `262144` for +production use. Depending on your platform: + +* Linux ++ +-- +The `vm.max_map_count` setting should be set permanently in `/etc/sysctl.conf`: +[source,sh] +-------------------------------------------- +grep vm.max_map_count /etc/sysctl.conf +vm.max_map_count=262144 +-------------------------------------------- + +To apply the setting on a live system type: `sysctl -w vm.max_map_count=262144` +-- + +* macOS with https://docs.docker.com/engine/installation/mac/#/docker-for-mac[Docker for Mac] ++ +-- +The `vm.max_map_count` setting must be set within the xhyve virtual machine: + +. From the command line, run: ++ +["source","sh"] +-------------------------------------------- +screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty +-------------------------------------------- + +. Press enter and use`sysctl` to configure `vm.max_map_count`: + +["source","sh"] +-------------------------------------------- +sysctl -w vm.max_map_count=262144 +-------------------------------------------- +-- + +* Windows and macOS with https://www.docker.com/products/docker-toolbox[Docker Toolbox] ++ +-- +The `vm.max_map_count` setting must be set via docker-machine: + +["source","txt"] +-------------------------------------------- +docker-machine ssh +sudo sysctl -w vm.max_map_count=262144 +-------------------------------------------- +-- +========================= + ===== Inspect status of cluster: ["source","txt"] From 1bec7c67701f777651ef1fbb807b0181904439de Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 16:56:47 -0700 Subject: [PATCH 02/11] Synced with Docker GS in SO --- docs/reference/setup/install/docker.asciidoc | 40 +++++++++++--------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index 3f19a6b9a38cc..b0545f704db75 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -68,10 +68,15 @@ endif::[] The following Docker compose file brings up a three-node {es} cluster. Node `es01` listens on `localhost:9200` and `es02` and `es03` talk to `es01` over a Docker network. -The https://docs.docker.com/engine/tutorials/dockervolumes[Docker named volumes] -`esdata01`, `esdata02`, and `esdata03` store the node data directories so the data persists across restarts. +The https://docs.docker.com/storage/volumes[Docker named volumes] +`esdata01`, `esdata02`, and `esdata03` store the node data directories so +the data persists across restarts. If they don't already exist, `docker-compose` creates them when you bring up the cluster. +IMPORTANT: Make sure Docker Engine is allotted at least 4GiB of memory. +In Docker Desktop, you configure resource usage on the Advanced tab in Preference (macOS) +or Settings (Windows). + ifeval::["{release-state}"=="unreleased"] WARNING: Version {version} of {es} has not yet been released, so a @@ -107,9 +112,9 @@ services: container_name: es01 environment: - node.name=es01 + - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: @@ -117,19 +122,19 @@ services: soft: -1 hard: -1 volumes: - - esdata01:/usr/share/elasticsearch/data + - data01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - - esnet + - elastic es02: image: {docker-image} container_name: es02 environment: - node.name=es02 + - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: @@ -137,17 +142,17 @@ services: soft: -1 hard: -1 volumes: - - esdata02:/usr/share/elasticsearch/data + - data02:/usr/share/elasticsearch/data networks: - - esnet + - elastic es03: image: {docker-image} container_name: es03 environment: - node.name=es03 + - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: @@ -155,20 +160,21 @@ services: soft: -1 hard: -1 volumes: - - esdata03:/usr/share/elasticsearch/data + - data03:/usr/share/elasticsearch/data networks: - - esnet + - elastic volumes: - esdata01: + data01: driver: local - esdata02: + data02: driver: local - esdata03: + data03: driver: local networks: - esnet: + elastic: + driver: bridge -------------------------------------------- endif::[] @@ -200,7 +206,7 @@ vm.max_map_count=262144 To apply the setting on a live system type: `sysctl -w vm.max_map_count=262144` -- -* macOS with https://docs.docker.com/engine/installation/mac/#/docker-for-mac[Docker for Mac] +* macOS with https://docs.docker.com/docker-for-mac[Docker for Mac] + -- The `vm.max_map_count` setting must be set within the xhyve virtual machine: @@ -220,7 +226,7 @@ sysctl -w vm.max_map_count=262144 -------------------------------------------- -- -* Windows and macOS with https://www.docker.com/products/docker-toolbox[Docker Toolbox] +* Windows and macOS with https://www.docker.com/products/docker-desktop[Docker Desktop] + -- The `vm.max_map_count` setting must be set via docker-machine: From 3e7a977ee5d7b1c82fa470df09ca8f555ecf7543 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 17:10:46 -0700 Subject: [PATCH 03/11] Incorporated review comments --- docs/reference/setup/install/docker.asciidoc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index b0545f704db75..89c915d7005ac 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -52,7 +52,7 @@ endif::[] ifeval::["{release-state}"!="unreleased"] -To start a single-node cluster {es} for development or testing, specify +To start a single-node {es} cluster for development or testing, specify <> to bypass the <>: ["source","sh",subs="attributes"] @@ -203,7 +203,12 @@ grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144 -------------------------------------------- -To apply the setting on a live system type: `sysctl -w vm.max_map_count=262144` +To apply the setting on a live system run: + +[source,sh] +-------------------------------------------- +sysctl -w vm.max_map_count=262144 +-------------------------------------------- -- * macOS with https://docs.docker.com/docker-for-mac[Docker for Mac] @@ -224,6 +229,8 @@ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty -------------------------------------------- sysctl -w vm.max_map_count=262144 -------------------------------------------- + +. To exit the `screen` session, type `Ctrl a d`. -- * Windows and macOS with https://www.docker.com/products/docker-desktop[Docker Desktop] From 2af7989e300c5a978b5de498b858d5e95b234cbe Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 17:34:27 -0700 Subject: [PATCH 04/11] Include compose file instead of embedding. --- .../setup/install/docker-compose.yml | 70 +++++++++ docs/reference/setup/install/docker.asciidoc | 134 +++++------------- 2 files changed, 106 insertions(+), 98 deletions(-) create mode 100644 docs/reference/setup/install/docker-compose.yml diff --git a/docs/reference/setup/install/docker-compose.yml b/docs/reference/setup/install/docker-compose.yml new file mode 100644 index 0000000000000..d4581be08246f --- /dev/null +++ b/docs/reference/setup/install/docker-compose.yml @@ -0,0 +1,70 @@ +version: '2.2' +services: + es01: + image: {docker-image} + container_name: es01 + environment: + - node.name=es01 + - cluster.name=es-docker-cluster + - discovery.seed_hosts=es02,es03 + - cluster.initial_master_nodes=es01,es02,es03 + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - data01:/usr/share/elasticsearch/data + ports: + - 9200:9200 + networks: + - elastic + es02: + image: {docker-image} + container_name: es02 + environment: + - node.name=es02 + - cluster.name=es-docker-cluster + - discovery.seed_hosts=es01,es03 + - cluster.initial_master_nodes=es01,es02,es03 + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - data02:/usr/share/elasticsearch/data + networks: + - elastic + es03: + image: {docker-image} + container_name: es03 + environment: + - node.name=es03 + - cluster.name=es-docker-cluster + - discovery.seed_hosts=es01,es02 + - cluster.initial_master_nodes=es01,es02,es03 + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - data03:/usr/share/elasticsearch/data + networks: + - elastic + +volumes: + data01: + driver: local + data02: + driver: local + data03: + driver: local + +networks: + elastic: + driver: bridge \ No newline at end of file diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index 89c915d7005ac..679c6f8ef93f3 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -65,124 +65,62 @@ endif::[] [[docker-compose-file]] ==== Starting a multi-node cluster with Docker compose -The following Docker compose file brings up a three-node {es} cluster. -Node `es01` listens on `localhost:9200` and `es02` and `es03` talk to `es01` over a Docker network. - -The https://docs.docker.com/storage/volumes[Docker named volumes] -`esdata01`, `esdata02`, and `esdata03` store the node data directories so -the data persists across restarts. -If they don't already exist, `docker-compose` creates them when you bring up the cluster. - -IMPORTANT: Make sure Docker Engine is allotted at least 4GiB of memory. -In Docker Desktop, you configure resource usage on the Advanced tab in Preference (macOS) -or Settings (Windows). +To get a three-node {es} cluster up and running in Docker, +you can use Docker Compose: +. Create a `docker-compose.yml` file: ifeval::["{release-state}"=="unreleased"] - ++ +-- WARNING: Version {version} of {es} has not yet been released, so a `docker-compose.yml` is not available for this version. endif::[] ifeval::["{release-state}"!="unreleased"] +["source","yaml",subs="attributes"] +-------------------------------------------- +include::docker-compose.yml[] +-------------------------------------------- +endif::[] -To bring up the cluster with <>, run: +This sample Docker Compose file brings up a three-node {es} cluster. +Node `es01` listens on `localhost:9200` and `es02` and `es03` talk to `es01` over a Docker network. -["source","sh"] +The https://docs.docker.com/storage/volumes[Docker named volumes] +`esdata01`, `esdata02`, and `esdata03` store the node data directories so +the data persists across restarts. +If they don't already exist, `docker-compose` creates them when you bring up the cluster. +-- +. Make sure Docker Engine is allotted at least 4GiB of memory. +In Docker Desktop, you configure resource usage on the Advanced tab in Preference (macOS) +or Settings (Windows). + +. Run `docker-compose` to bring up the cluster: ++ +["source","sh",subs="attributes"] -------------------------------------------- docker-compose up -------------------------------------------- -endif::[] +. Submit a `_cat/nodes` request to see that the nodes are up and running: ++ +[source,sh] +-------------------------------------------------- +curl -X GET "localhost:9200/_cat/nodes?v&pretty" +-------------------------------------------------- + +To stop the cluster, run `docker-compose down`. +The data in the Docker volumes is preserved and loaded +when when you restart the cluster with `docker-compose up`. +To **delete the data volumes** when you bring down the cluster, +specify the `-v` option: `docker-compose down -v`. [NOTE] `docker-compose` is not pre-installed with Docker on Linux. For installation instructions, see https://docs.docker.com/compose/install[Install Compose on Linux] on docs.docker.com. -[[docker-prod-cluster-composefile]] -ifeval::["{release-state}"!="unreleased"] -`docker-compose.yml`: -["source","yaml",subs="attributes"] --------------------------------------------- -version: '2.2' -services: - es01: - image: {docker-image} - container_name: es01 - environment: - - node.name=es01 - - cluster.name=es-docker-cluster - - discovery.seed_hosts=es02,es03 - - cluster.initial_master_nodes=es01,es02,es03 - - bootstrap.memory_lock=true - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ulimits: - memlock: - soft: -1 - hard: -1 - volumes: - - data01:/usr/share/elasticsearch/data - ports: - - 9200:9200 - networks: - - elastic - es02: - image: {docker-image} - container_name: es02 - environment: - - node.name=es02 - - cluster.name=es-docker-cluster - - discovery.seed_hosts=es01,es03 - - cluster.initial_master_nodes=es01,es02,es03 - - bootstrap.memory_lock=true - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ulimits: - memlock: - soft: -1 - hard: -1 - volumes: - - data02:/usr/share/elasticsearch/data - networks: - - elastic - es03: - image: {docker-image} - container_name: es03 - environment: - - node.name=es03 - - cluster.name=es-docker-cluster - - discovery.seed_hosts=es01,es02 - - cluster.initial_master_nodes=es01,es02,es03 - - bootstrap.memory_lock=true - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ulimits: - memlock: - soft: -1 - hard: -1 - volumes: - - data03:/usr/share/elasticsearch/data - networks: - - elastic - -volumes: - data01: - driver: local - data02: - driver: local - data03: - driver: local - -networks: - elastic: - driver: bridge --------------------------------------------- -endif::[] - -To stop the cluster, run `docker-compose down`. -The data in the Docker volumes is preserved and loaded when when you restart the cluster with `docker-compose up`. -To **delete the data volumes** when you bring down the cluster, specify the `-v` option: -`docker-compose down -v`. - [[docker-cli-run-prod-mode]] ==== Using the Docker images in production From 890ac711169cfbae32411679435b360a34a262d1 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 18:30:49 -0700 Subject: [PATCH 05/11] Edited config section --- docs/reference/setup/install/docker.asciidoc | 72 +++++++++----------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index 679c6f8ef93f3..c46671eb71fc9 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -110,6 +110,9 @@ docker-compose up curl -X GET "localhost:9200/_cat/nodes?v&pretty" -------------------------------------------------- +Log messages go to the console and are handled by the configured Docker logging driver. +By default you can access logs with `docker logs`. + To stop the cluster, run `docker-compose down`. The data in the Docker volumes is preserved and loaded when when you restart the cluster with `docker-compose up`. @@ -121,15 +124,12 @@ specify the `-v` option: `docker-compose down -v`. For installation instructions, see https://docs.docker.com/compose/install[Install Compose on Linux] on docs.docker.com. -[[docker-cli-run-prod-mode]] +[[docker-prod-prerequisites]] ==== Using the Docker images in production -[[docker-prod-prerequisites]] -[IMPORTANT] -========================= +IMPORTANT: The `vm.max_map_count` kernel setting must be set to at least `262144` for production use. -The `vm.max_map_count` kernel setting needs to be set to at least `262144` for -production use. Depending on your platform: +How you set `vm.max_map_count` depends on your platform: * Linux + @@ -182,36 +182,34 @@ docker-machine ssh sudo sysctl -w vm.max_map_count=262144 -------------------------------------------- -- -========================= -===== Inspect status of cluster: +[[docker-configuration-methods]] +==== Configuring {es} with Docker -["source","txt"] --------------------------------------------- -curl http://127.0.0.1:9200/_cat/health -1472225929 15:38:49 docker-cluster green 2 2 4 2 0 0 0 0 - 100.0% --------------------------------------------- -// NOTCONSOLE +When you run in Docker, the <> are loaded from +`/usr/share/elasticsearch/config/`. -Log messages go to the console and are handled by the configured Docker logging -driver. By default you can access logs with `docker logs`. +To use custom configuration files, you <> +over the configuration files in the image. -[[docker-configuration-methods]] -==== Configuring {es} with Docker +You can set individual {es} configuration parameters using Docker environment variables. +The <> and the +<> use this method. -{es} loads its configuration from files under `/usr/share/elasticsearch/config/`. -These configuration files are documented in <> and <>. +You can also override the default command for the image to pass {es} configuration +parameters as command line options. For example: -The image offers several methods for configuring {es} settings with the -conventional approach being to provide customized files, that is to say -`elasticsearch.yml`, but it's also possible to use environment variables to set -options: +["source","sh"] +-------------------------------------------- +docker run bin/elasticsearch -Ecluster.name=mynewclustername +-------------------------------------------- -===== A. Present the parameters via Docker environment variables -For example, to define the cluster name with `docker run` you can pass -`-e "cluster.name=mynewclustername"`. Double quotes are required. +While bind-mounting your configuration files is usually the preferred method in production, +you can also <> +that contains your configuration. -===== B. Bind-mounted configuration +[[docker-config-bind-mount]] +===== Mounting {es} configuration files Create your custom config file and mount this over the image's corresponding file. For example, bind-mounting a `custom_elasticsearch.yml` with `docker run` can be accomplished with the parameter: @@ -226,8 +224,10 @@ uid:gid `1000:1000`**. Bind mounted host directories and files, such as such as `/usr/share/elasticsearch/data`, write access is required as well. Also see note 1 below. -===== C. Customized image -In some environments, it may make more sense to prepare a custom image containing + +[[docker-config-custom-image]] +===== Using custom Docker images +In some environments, it might make more sense to prepare a custom image that contains your configuration. A `Dockerfile` to achieve this may be as simple as: ["source","sh",subs="attributes"] @@ -251,16 +251,6 @@ comfortable with them adding the `--batch` flag to the plugin install command. See {plugins}/_other_command_line_parameters.html[Plugin Management documentation] for more details. -[[override-image-default]] -===== D. Override the image's default https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options[CMD] - -Options can be passed as command-line options to the {es} process by -overriding the default command for the image. For example: - -["source","sh"] --------------------------------------------- -docker run bin/elasticsearch -Ecluster.name=mynewclustername --------------------------------------------- [[next-getting-started-tls-docker]] ==== Configuring SSL/TLS with the {es} Docker image @@ -321,7 +311,7 @@ the <>, you will additionally need the `memlock: true` ulimit, either defined in the https://docs.docker.com/engine/reference/commandline/dockerd/#default-ulimits[Docker Daemon] or specifically set for the container. This is demonstrated above in the -<>. If using `docker run`: +<>. If using `docker run`: + -- -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 From fece8b26390699133461b51662cea6b5f02bcc93 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 20:36:54 -0700 Subject: [PATCH 06/11] More edits --- docs/reference/setup/install/docker.asciidoc | 269 ++++++++++--------- 1 file changed, 143 insertions(+), 126 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index c46671eb71fc9..b80498aff6992 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -63,7 +63,7 @@ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" {docker-ima endif::[] [[docker-compose-file]] -==== Starting a multi-node cluster with Docker compose +==== Starting a multi-node cluster with Docker Compose To get a three-node {es} cluster up and running in Docker, you can use Docker Compose: @@ -88,13 +88,16 @@ This sample Docker Compose file brings up a three-node {es} cluster. Node `es01` listens on `localhost:9200` and `es02` and `es03` talk to `es01` over a Docker network. The https://docs.docker.com/storage/volumes[Docker named volumes] -`esdata01`, `esdata02`, and `esdata03` store the node data directories so -the data persists across restarts. +`data01`, `data02`, and `data03` store the node data directories so the data persists across restarts. If they don't already exist, `docker-compose` creates them when you bring up the cluster. -- . Make sure Docker Engine is allotted at least 4GiB of memory. In Docker Desktop, you configure resource usage on the Advanced tab in Preference (macOS) or Settings (Windows). ++ +NOTE: Docker Compose is not pre-installed with Docker on Linux. +See docs.docker.com for installation instructions: +https://docs.docker.com/compose/install[Install Compose on Linux] . Run `docker-compose` to bring up the cluster: + @@ -119,15 +122,21 @@ when when you restart the cluster with `docker-compose up`. To **delete the data volumes** when you bring down the cluster, specify the `-v` option: `docker-compose down -v`. -[NOTE] -`docker-compose` is not pre-installed with Docker on Linux. -For installation instructions, see -https://docs.docker.com/compose/install[Install Compose on Linux] on docs.docker.com. + +[[next-getting-started-tls-docker]] +===== Start a multi-node cluster with TLS enabled + +See <> and +{stack-gs}/get-started-docker.html#get-started-docker-tls[Run the {stack} in Docker with TLS enabled]. [[docker-prod-prerequisites]] ==== Using the Docker images in production -IMPORTANT: The `vm.max_map_count` kernel setting must be set to at least `262144` for production use. +The following requirements and recommendations apply when running {es} in Docker in production. + +===== Set `vm.max_map_count` to at least `262144` + +The `vm.max_map_count` kernel setting must be set to at least `262144` for production use. How you set `vm.max_map_count` depends on your platform: @@ -141,7 +150,7 @@ grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144 -------------------------------------------- -To apply the setting on a live system run: +To apply the setting on a live system, run: [source,sh] -------------------------------------------- @@ -156,10 +165,12 @@ The `vm.max_map_count` setting must be set within the xhyve virtual machine: . From the command line, run: + +-- ["source","sh"] -------------------------------------------- screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty -------------------------------------------- +-- . Press enter and use`sysctl` to configure `vm.max_map_count`: @@ -183,6 +194,115 @@ sudo sysctl -w vm.max_map_count=262144 -------------------------------------------- -- +===== Configuration files must be readable by the `elasticsearch` user + +By default, {es} runs inside the container as user `elasticsearch` using +uid:gid `1000:1000`. + +CAUTION: One exception is https://docs.openshift.com/container-platform/3.6/creating_images/guidelines.html#openshift-specific-guidelines[Openshift], +which runs containers using an arbitrarily assigned user ID. Openshift will +present persistent volumes with the gid set to `0` which will work without any +adjustments. + +If you are bind-mounting a local directory or file, it must be readable by the `elasticsearch` user. +In addition, this user must have write access to the <>. +A good strategy is to grant group access to gid `1000` or `0` for the local directory. + +For example, to prepare a local directory for storing data through a bind-mount: + +["source","sh"] +-------------------------------------------- + mkdir esdatadir + chmod g+rwx esdatadir + chgrp 1000 esdatadir +-------------------------------------------- + +As a last resort, you can force the container to mutate the ownership of +any bind-mounts used for the <> through the +environment variable `TAKE_FILE_OWNERSHIP`. When you do this, they will be owned by +uid:gid `1000:0`, which provides the required read/write access to the {es} process. + + +===== Increase ulimits for nofile and nproc + +Increased ulimits for <> and <> +must be available for the {es} containers. +Verify the https://github.com/moby/moby/tree/ea4d1243953e6b652082305a9c3cda8656edab26/contrib/init[init system] +for the Docker daemon sets them to acceptable values. + +To check the Docker daemon defaults for ulimits, run: + +["source","sh"] +-------------------------------------------- +docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su' +-------------------------------------------- + +If needed, adjust them in the Daemon or override them per container. +For example, when using `docker run`, set: + +["source","txt"] +-------------------------------------------- + --ulimit nofile=65535:65535 +-------------------------------------------- + +===== Disable swapping + +Swapping needs to be disabled for performance and node stability. +For information about ways to do this, see <>. + +If you opt for the `bootstrap.memory_lock: true` approach, +you also need to define the `memlock: true` ulimit in the +https://docs.docker.com/engine/reference/commandline/dockerd/#default-ulimits[Docker Daemon], +or explicitly set for the container as shown in the <>. +When using `docker run`, you can specify: + + -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 + +===== Randomize published ports + +The image https://docs.docker.com/engine/reference/builder/#/expose[exposes] +TCP ports 9200 and 9300. For production clusters, randomizing the +published ports with `--publish-all` is recommended, +unless you are pinning one container per host. + +===== Set the heap size + +Use the `ES_JAVA_OPTS` environment variable to set the heap size. +For example, to use 16GB, specify `-e ES_JAVA_OPTS="-Xms16g -Xmx16g"` with `docker run`. + +IMPORTANT: You must <> even if you are +https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory[limiting +memory access] to the container. + +===== Pin deployments to a specific image version + +Pin your deployments to a specific version of the {es} Docker image. For +example +docker.elastic.co/elasticsearch/elasticsearch:{version}+. + +===== Always bind data volumes + +You should use a volume bound on `/usr/share/elasticsearch/data` for the following reasons: + +. The data of your {es} node won't be lost if the container is killed + +. {es} is I/O sensitive and the Docker storage driver is not ideal for fast I/O + +. It allows the use of advanced +https://docs.docker.com/engine/extend/plugins/#volume-plugins[Docker volume plugins] + +===== Avoid using `loop-lvm` mode + +If you are using the devicemapper storage driver, do not use the default `loop-lvm` mode. +Configure docker-engine to use +https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-docker-with-devicemapper[direct-lvm]. + +===== Centralize your logs + +Consider centralizing your logs by using a different +https://docs.docker.com/engine/admin/logging/overview/[logging driver]. Also +note that the default json-file logging driver is not ideally suited for +production use. + [[docker-configuration-methods]] ==== Configuring {es} with Docker @@ -210,25 +330,23 @@ that contains your configuration. [[docker-config-bind-mount]] ===== Mounting {es} configuration files -Create your custom config file and mount this over the image's corresponding file. -For example, bind-mounting a `custom_elasticsearch.yml` with `docker run` can be -accomplished with the parameter: + +Create custom config files and bind-mount them over the corresponding files in the Docker image. +For example, to bind-mount `custom_elasticsearch.yml` with `docker run`, specify: ["source","sh"] -------------------------------------------- -v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -------------------------------------------- -IMPORTANT: The container **runs {es} as user `elasticsearch` using -uid:gid `1000:1000`**. Bind mounted host directories and files, such as -`custom_elasticsearch.yml` above, **need to be accessible by this user**. For the <>, -such as `/usr/share/elasticsearch/data`, write access is required as well. -Also see note 1 below. +IMPORTANT: The container **runs {es} as user `elasticsearch` using +**uid:gid `1000:1000`**. Bind mounted host directories and files must be accessible by this user, +and the data and log directories must be writable by this user. [[docker-config-custom-image]] ===== Using custom Docker images In some environments, it might make more sense to prepare a custom image that contains -your configuration. A `Dockerfile` to achieve this may be as simple as: +your configuration. A `Dockerfile` to achieve this might be as simple as: ["source","sh",subs="attributes"] -------------------------------------------- @@ -236,7 +354,7 @@ FROM docker.elastic.co/elasticsearch/elasticsearch:{version} COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/ -------------------------------------------- -You could then build and try the image with something like: +You could then build and run the image with: ["source","sh"] -------------------------------------------- @@ -244,114 +362,13 @@ docker build --tag=elasticsearch-custom . docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom -------------------------------------------- -Some plugins require additional security permissions. You have to explicitly accept -them either by attaching a `tty` when you run the Docker image and accepting yes at -the prompts, or inspecting the security permissions separately and if you are -comfortable with them adding the `--batch` flag to the plugin install command. -See {plugins}/_other_command_line_parameters.html[Plugin Management documentation] -for more details. - - -[[next-getting-started-tls-docker]] -==== Configuring SSL/TLS with the {es} Docker image - -See <>. - -==== Notes for production use and defaults - -We have collected a number of best practices for production use. -Any Docker parameters mentioned below assume the use of `docker run`. - -. By default, {es} runs inside the container as user `elasticsearch` using -uid:gid `1000:1000`. -+ --- -CAUTION: One exception is https://docs.openshift.com/container-platform/3.6/creating_images/guidelines.html#openshift-specific-guidelines[Openshift], -which runs containers using an arbitrarily assigned user ID. Openshift will -present persistent volumes with the gid set to `0` which will work without any -adjustments. - -If you are bind-mounting a local directory or file, ensure it is readable by -this user, while the <> additionally require -write access. A good strategy is to grant group access to gid `1000` or `0` for -the local directory. As an example, to prepare a local directory for storing -data through a bind-mount: - - mkdir esdatadir - chmod g+rwx esdatadir - chgrp 1000 esdatadir - -As a last resort, you can also force the container to mutate the ownership of -any bind-mounts used for the <> through the -environment variable `TAKE_FILE_OWNERSHIP`. In this case, they will be owned by -uid:gid `1000:0` providing read/write access to the {es} process as required. --- - -. It is important to ensure increased ulimits for -<> and <> are -available for the {es} containers. Verify the https://github.com/moby/moby/tree/ea4d1243953e6b652082305a9c3cda8656edab26/contrib/init[init system] -for the Docker daemon is already setting those to acceptable values and, if -needed, adjust them in the Daemon, or override them per container, for example -using `docker run`: -+ --- - --ulimit nofile=65535:65535 - -NOTE: One way of checking the Docker daemon defaults for the aforementioned -ulimits is by running: - - docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su' --- - -. Swapping needs to be disabled for performance and node stability. This can be -achieved through any of the methods mentioned in the -<>. If you opt for the -`bootstrap.memory_lock: true` approach, apart from defining it through any of -the <>, you will -additionally need the `memlock: true` ulimit, either defined in the -https://docs.docker.com/engine/reference/commandline/dockerd/#default-ulimits[Docker Daemon] -or specifically set for the container. This is demonstrated above in the -<>. If using `docker run`: -+ --- - -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 --- - -. The image https://docs.docker.com/engine/reference/builder/#/expose[exposes] -TCP ports 9200 and 9300. For clusters it is recommended to randomize the -published ports with `--publish-all`, unless you are pinning one container per host. +Some plugins require additional security permissions. +You must explicitly accept them either by: -. Use the `ES_JAVA_OPTS` environment variable to set heap size. For example, to -use 16GB, use `-e ES_JAVA_OPTS="-Xms16g -Xmx16g"` with `docker run`. -+ --- -NOTE: You still need to <> even if you are -https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory[limiting -memory access] to the container. --- - -. Pin your deployments to a specific version of the {es} Docker image, for -example +docker.elastic.co/elasticsearch/elasticsearch:{version}+. - -. Always use a volume bound on `/usr/share/elasticsearch/data`, as shown in the -<>, for the following reasons: - -.. The data of your {es} node won't be lost if the container is killed - -.. {es} is I/O sensitive and the Docker storage driver is not ideal for fast I/O - -.. It allows the use of advanced -https://docs.docker.com/engine/extend/plugins/#volume-plugins[Docker volume plugins] - -. If you are using the devicemapper storage driver, make sure you are not using -the default `loop-lvm` mode. Configure docker-engine to use -https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-docker-with-devicemapper[direct-lvm] -instead. - -. Consider centralizing your logs by using a different -https://docs.docker.com/engine/admin/logging/overview/[logging driver]. Also -note that the default json-file logging driver is not ideally suited for -production use. +* Attaching a `tty` when you run the Docker image and allowing the permissions when prompted. +* Inspecting the security permissions and accepting them (if appropriate) by adding the `--batch` flag to the plugin install command. +See {plugins}/_other_command_line_parameters.html[Plugin management] +for more information. include::next-steps.asciidoc[] From 5d5bcbc2c71086ebc916c4ccd6e93407e6e5a6a6 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Mon, 28 Oct 2019 21:03:17 -0700 Subject: [PATCH 07/11] Fixed warning --- docs/reference/setup/install/docker.asciidoc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index b80498aff6992..c1dd5ee153f8e 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -165,15 +165,13 @@ The `vm.max_map_count` setting must be set within the xhyve virtual machine: . From the command line, run: + --- ["source","sh"] -------------------------------------------- screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty -------------------------------------------- --- . Press enter and use`sysctl` to configure `vm.max_map_count`: - ++ ["source","sh"] -------------------------------------------- sysctl -w vm.max_map_count=262144 @@ -199,10 +197,9 @@ sudo sysctl -w vm.max_map_count=262144 By default, {es} runs inside the container as user `elasticsearch` using uid:gid `1000:1000`. -CAUTION: One exception is https://docs.openshift.com/container-platform/3.6/creating_images/guidelines.html#openshift-specific-guidelines[Openshift], -which runs containers using an arbitrarily assigned user ID. Openshift will -present persistent volumes with the gid set to `0` which will work without any -adjustments. +IMPORTANT: One exception is https://docs.openshift.com/container-platform/3.6/creating_images/guidelines.html#openshift-specific-guidelines[Openshift], +which runs containers using an arbitrarily assigned user ID. +Openshift presents persistent volumes with the gid set to `0`, which works without any adjustments. If you are bind-mounting a local directory or file, it must be readable by the `elasticsearch` user. In addition, this user must have write access to the <>. From bfa3331671b2d2eb29ee1017f4bb3a0530749558 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Tue, 29 Oct 2019 14:28:23 -0700 Subject: [PATCH 08/11] Snippet cleanup --- docs/reference/setup/install/docker.asciidoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index c1dd5ee153f8e..b8c2a2d0b6986 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -185,7 +185,7 @@ sysctl -w vm.max_map_count=262144 -- The `vm.max_map_count` setting must be set via docker-machine: -["source","txt"] +["source","sh"] -------------------------------------------- docker-machine ssh sudo sysctl -w vm.max_map_count=262144 @@ -209,9 +209,9 @@ For example, to prepare a local directory for storing data through a bind-mount: ["source","sh"] -------------------------------------------- - mkdir esdatadir - chmod g+rwx esdatadir - chgrp 1000 esdatadir +mkdir esdatadir +chmod g+rwx esdatadir +chgrp 1000 esdatadir -------------------------------------------- As a last resort, you can force the container to mutate the ownership of @@ -237,9 +237,9 @@ docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && If needed, adjust them in the Daemon or override them per container. For example, when using `docker run`, set: -["source","txt"] +["source","sh"] -------------------------------------------- - --ulimit nofile=65535:65535 +--ulimit nofile=65535:65535 -------------------------------------------- ===== Disable swapping From 9acde1a14437208a73b82b8f7a8ed03fbdcb0959 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Wed, 30 Oct 2019 07:19:23 -0700 Subject: [PATCH 09/11] Fixed link --- docs/reference/setup/install/docker.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index b8c2a2d0b6986..3d2d00594cc7a 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -127,7 +127,7 @@ specify the `-v` option: `docker-compose down -v`. ===== Start a multi-node cluster with TLS enabled See <> and -{stack-gs}/get-started-docker.html#get-started-docker-tls[Run the {stack} in Docker with TLS enabled]. +{stack-gs}/get-started-docker.html[Run the {stack} in Docker with TLS enabled]. [[docker-prod-prerequisites]] ==== Using the Docker images in production From 59a9e1016f8455985f0e97952464f5d6873dd748 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Wed, 30 Oct 2019 07:53:59 -0700 Subject: [PATCH 10/11] Cleaned up source blocks. --- docs/reference/setup/install/docker.asciidoc | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index 3d2d00594cc7a..c6ecbefb63585 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -30,7 +30,7 @@ endif::[] ifeval::["{release-state}"!="unreleased"] -["source","sh",subs="attributes"] +[source,sh,subs="attributes"] -------------------------------------------- docker pull {docker-repo}:{version} -------------------------------------------- @@ -55,7 +55,7 @@ ifeval::["{release-state}"!="unreleased"] To start a single-node {es} cluster for development or testing, specify <> to bypass the <>: -["source","sh",subs="attributes"] +[source,sh,subs="attributes"] -------------------------------------------- docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" {docker-image} -------------------------------------------- @@ -78,7 +78,7 @@ WARNING: Version {version} of {es} has not yet been released, so a endif::[] ifeval::["{release-state}"!="unreleased"] -["source","yaml",subs="attributes"] +[source,yaml,subs="attributes"] -------------------------------------------- include::docker-compose.yml[] -------------------------------------------- @@ -101,7 +101,7 @@ https://docs.docker.com/compose/install[Install Compose on Linux] . Run `docker-compose` to bring up the cluster: + -["source","sh",subs="attributes"] +[source,sh,subs="attributes"] -------------------------------------------- docker-compose up -------------------------------------------- @@ -127,7 +127,7 @@ specify the `-v` option: `docker-compose down -v`. ===== Start a multi-node cluster with TLS enabled See <> and -{stack-gs}/get-started-docker.html[Run the {stack} in Docker with TLS enabled]. +{stack-gs}/get-started-docker.html#get-started-docker-tls[Run the {stack} in Docker with TLS enabled]. [[docker-prod-prerequisites]] ==== Using the Docker images in production @@ -165,14 +165,14 @@ The `vm.max_map_count` setting must be set within the xhyve virtual machine: . From the command line, run: + -["source","sh"] +[source,sh] -------------------------------------------- screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty -------------------------------------------- . Press enter and use`sysctl` to configure `vm.max_map_count`: + -["source","sh"] +[source,sh] -------------------------------------------- sysctl -w vm.max_map_count=262144 -------------------------------------------- @@ -185,7 +185,7 @@ sysctl -w vm.max_map_count=262144 -- The `vm.max_map_count` setting must be set via docker-machine: -["source","sh"] +[source,sh] -------------------------------------------- docker-machine ssh sudo sysctl -w vm.max_map_count=262144 @@ -207,7 +207,7 @@ A good strategy is to grant group access to gid `1000` or `0` for the local dire For example, to prepare a local directory for storing data through a bind-mount: -["source","sh"] +[source,sh] -------------------------------------------- mkdir esdatadir chmod g+rwx esdatadir @@ -229,7 +229,7 @@ for the Docker daemon sets them to acceptable values. To check the Docker daemon defaults for ulimits, run: -["source","sh"] +[source,sh] -------------------------------------------- docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su' -------------------------------------------- @@ -237,7 +237,7 @@ docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && If needed, adjust them in the Daemon or override them per container. For example, when using `docker run`, set: -["source","sh"] +[source,sh] -------------------------------------------- --ulimit nofile=65535:65535 -------------------------------------------- @@ -316,7 +316,7 @@ The <> and the You can also override the default command for the image to pass {es} configuration parameters as command line options. For example: -["source","sh"] +[source,sh] -------------------------------------------- docker run bin/elasticsearch -Ecluster.name=mynewclustername -------------------------------------------- @@ -331,7 +331,7 @@ that contains your configuration. Create custom config files and bind-mount them over the corresponding files in the Docker image. For example, to bind-mount `custom_elasticsearch.yml` with `docker run`, specify: -["source","sh"] +[source,sh] -------------------------------------------- -v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -------------------------------------------- @@ -345,7 +345,7 @@ and the data and log directories must be writable by this user. In some environments, it might make more sense to prepare a custom image that contains your configuration. A `Dockerfile` to achieve this might be as simple as: -["source","sh",subs="attributes"] +[source,sh,subs="attributes"] -------------------------------------------- FROM docker.elastic.co/elasticsearch/elasticsearch:{version} COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/ @@ -353,7 +353,7 @@ COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsea You could then build and run the image with: -["source","sh"] +[source,sh] -------------------------------------------- docker build --tag=elasticsearch-custom . docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom From ff7d3b3c768e1dbd7e27a1ffd4a51f039a8009b7 Mon Sep 17 00:00:00 2001 From: Deb Adair Date: Wed, 30 Oct 2019 11:57:58 -0700 Subject: [PATCH 11/11] Disabled snippet testing for non-snippet. --- docs/reference/setup/install/docker.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/setup/install/docker.asciidoc b/docs/reference/setup/install/docker.asciidoc index c6ecbefb63585..8f654bd246b87 100644 --- a/docs/reference/setup/install/docker.asciidoc +++ b/docs/reference/setup/install/docker.asciidoc @@ -112,6 +112,7 @@ docker-compose up -------------------------------------------------- curl -X GET "localhost:9200/_cat/nodes?v&pretty" -------------------------------------------------- +// NOTCONSOLE Log messages go to the console and are handled by the configured Docker logging driver. By default you can access logs with `docker logs`.