企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Docker安装方式 Elasticsearch也提供了可用的Docker镜像,The images use [centos:7](https://hub.docker.com/_/centos/) as the base image and are available with [X-Pack](https://www.elastic.co/guide/en/x-pack/6.0/xpack-introduction.html). A list of all published Docker images and tags can be found in[www.docker.elastic.co](https://www.docker.elastic.co/). The source code can be found on [GitHub](https://github.com/elastic/elasticsearch-docker/tree/6.0). ## Image types The images are available in three different configurations or "flavors". The basic flavor, which is the default, ships with X-Pack Basic features pre-installed and automatically activated with a free licence. The platinum flavor features all X-Pack functionally under a 30-day trial licence. The oss flavor does not include X-Pack, and contains only open-source Elasticsearch. > 注意 > > [X-Pack](https://www.elastic.co/guide/en/x-pack/6.0/xpack-security.html) Security is enabled in the platinum image. To access your cluster, it’s necessary to set an initial password for the elastic user. The initial password can be set at start up time via the ELASTIC_PASSWORD environment variable: ``` docker run -e ELASTIC_PASSWORD=MagicWord docker.elastic.co/elasticsearch/elasticsearch-platinum:6.0.0 ``` > 注意 > >The platinum image includes a trial license for 30 days. After that, you can obtain one of the available subscriptions or revert to a Basic licence. The Basic license is free and includes a selection of X-Pack features. Obtaining Elasticsearch 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/elasticsearch/elasticsearch:6.0.0 docker pull docker.elastic.co/elasticsearch/elasticsearch-platinum:6.0.0 docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0 ``` ## 在命令行中运行Elasticsearch ### 开发模式 Elasticsearch可以通过下面的指令快起的在开发或测试环境中启动: ``` docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.3.0 ``` ### 生产模式 > 重要提示 > > 用于生产`vm_max_map_count`内核参数需要被设置到至少262144。不同平台的设置方式: > > - Linux > > `vm_max_map_count`参数需要永久的配置在`/etc/sysctl.conf`中: > > > ``` > $ grep vm.max_map_count /etc/sysctl.conf > vm.max_map_count=262144 > > ``` > 正在运行的系统实时生效可使用:`sysctl -w vm.max_map_count=262144` > > - OSX with [Docker for Mac](https://docs.docker.com/engine/installation/mac/#/docker-for-mac) > > `vm_max_map_count`参数必须要在`xhyve`虚拟机中配置: > > > ``` > $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty > > ``` > 登录到root用户下,像Linux那样通过`sysctl`来配置 > > > ``` > sysctl -w vm.max_map_count=262144 > > ``` > - OSX with [Docker Toolbox](https://docs.docker.com/engine/installation/mac/#docker-toolbox) > > `vm_max_map_count`参数必须要在`docker-machine`中配置: > > > ``` > docker-machine ssh > sudo sysctl -w vm.max_map_count=262144 > > ``` 下面的示例演示了启动一个包含两个节点的集群。启动集群之前,你需要编写好[docker-compose.yml](#docker-compose),然后输入: ``` docker-compose up ``` > 注意 > > 如果Linux上没有预安装`docker-compose`指令,请参考此站点进行安装:[docker-compose](https://docs.docker.com/compose/install/#install-using-pip)。 `elasticsearch1`节点将会监听`localhost:9200`,并且`elasticsearch1`与`elasticsearch2`将会通过Docker网络通信。 这个例子还使用[Docker named volumes](https://docs.docker.com/engine/tutorials/dockervolumes),被称为esdata1和esdata2,,如果不存在会先创建。 `docker-compose.yml:` ``` version: '2' services: elasticsearch1: image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0 container_name: elasticsearch1 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 mem_limit: 1g cap_add: - IPC_LOCK volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet elasticsearch2: image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "discovery.zen.ping.unicast.hosts=elasticsearch1" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 mem_limit: 1g cap_add: - IPC_LOCK volumes: - esdata2:/usr/share/elasticsearch/data networks: - esnet volumes: esdata1: driver: local esdata2: driver: local networks: esnet: driver: bridge ``` 若要停掉整个集群,输入`docker-compose down`即可。数据目录会被保留下来,所以再次通过`docker-compose up`启动整个集群会得到之前的数据。如要停止整个集群且删除之前的数据,请使用`docker-compose down -v`即可。 ### 检查集群状态 ``` curl -u elastic http://127.0.0.1:9200/_cat/health Enter host password for user 'elastic': 1472225929 15:38:49 docker-cluster green 2 2 4 2 0 0 0 0 - 100.0% ``` 日志信息将被输出到控制台且被Docker日志驱动处理。默认情况下你可以通多`docker logs`来获取日志信息。 ## 在Docker中配置Elastcsearch Elasticsearch从`/usr/share/elasticsearch/config`文件中加载配置。这些配置文件的文档在[Elasticsearch设置](../Configuring_Elasticsearch.md)与[JVM设置](../Important_System_Configuration/Configuring_system_settings.md#jvm-options)。 镜像通过了配置多种方式,传统的是修改`elasticsearch.yml`文件,但也可以通过环境变量来设置参数: ### A.通过Docker环境变量方式设置 例如,在使用`docker run`的时候输入`-e "cluster.name=mynewclustername"`来定义集群名称。双引号是必须的。 > 注意 > > [默认设置](../Configuring_Elasticsearch.md#_setting_default_settings)与普通设置有一些区别。如果你定义了,模板中以`default.`开头的普通设置将不会被覆盖。 ### B.绑定挂载文件方式设置 创建一个自定义的配置文件并挂载到镜像中配置文件同样的路径。例如,使用`docker run`时绑定挂载一个`custom_elasticsearch.yml`的参数: ``` -v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ``` > 重要 > > `custom_elasticsearch.yml`需要能够被`uid:gid 1000:1000`读取。 ### C.自定义镜像 在某些环境中,你可以需要自定义镜像包括你的配置。一个完整的`Dockerfile`可能像是下面这个样子: ``` FROM docker.elastic.co/elasticsearch/elasticsearch:5.3.0 ADD elasticsearch.yml /usr/share/elasticsearch/config/ USER root RUN chown elasticsearch:elasticsearch config/elasticsearch.yml USER elasticsearch ``` 然后您可以像这样尝试构建: ``` docker build --tag=elasticsearch-custom . docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom ``` ### D.覆盖镜像默认的命令行参数 可以通过镜像的默认指令来覆盖Elsticsearch提供的命令行参数,例如: ``` docker run <various parameters> bin/elasticsearch -Ecluster.name=mynewclustername ``` ## 生产使用以及默认值的注意事项 我们收集了一些生产使用的最佳实践配置。所有提及到的参数都假定你使用`docker run`。 // TODO ## 下一步 现在,您搭建了一个测试环境Elasticsearch。开始更深入的研究或投入生产使用Elasticsearch之前,你需要做一些额外的配置: - 了解如何[配置Elasticsearch](../Configuring_Elasticsearch.md)。 - 配置[重要的Elasticsearch设置](../Important_Elasticsearch_configuration.md)。 - 配置[重要的系统设置](../Important_System_Configuration.md)。