# 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)。
- 入门
- 基本概念
- 安装
- 探索你的集群
- 集群健康
- 列出所有索引库
- 创建一个索引库
- 索引文档创建与查询
- 删除一个索引库
- 修改你的数据
- 更新文档
- 删除文档
- 批量处理
- 探索你的数据
- 搜索API
- 查询语言介绍
- 执行搜索
- 执行过滤
- 执行聚合
- 总结
- Elasticsearch设置
- 安装Elasticsearch
- .zip或.tar.gz文件的安装方式
- Install Elasticsearch with .zip on Windows
- Debian软件包安装方式
- RPM安装方式
- Install Elasticsearch with Windows MSI Installer
- Docker安装方式
- 配置Elasticsearch
- 安全配置
- 日志配置
- 重要的Elasticsearch配置
- 重要的系统配置
- 系统设置
- 在jvm.options中设置JVM堆大小
- 禁用swapping
- 文件描述符
- 虚拟内存
- 线程数
- DNS cache settings
- 启动前检查
- 堆大小检查
- 文件描述符检查
- 内存锁定检查
- 最大线程数检查
- 最大虚拟内存检查
- Max file size check
- 最大map数检查
- JVM Client模式检查
- 串行收集使用检查
- 系统调用过滤检查
- OnError与OnOutOfMemoryError检查
- Early-access check
- G1GC检查
- Elasticsearch停机
- Elasticsearch升级
- 滚动升级
- 全集群重启升级
- 索引重建升级
- Set up X-Pack
- Installing X-Pack
- X-Pack Settings
- Watcher Settings
- Configuring Security
- Breaking changes in 6.0
- X-Pack Breaking Changes
- 重大变化
- 6.0的重大变化
- 聚合变化
- Cat API变化
- 客户端变化
- 集群变化
- 文档API变化
- 索引变化
- 预处理变化
- 映射变化
- Packaging变化
- Percolator变化
- 插件变化
- 索引重建变化
- 信息统计变化
- DSL查询变化
- 设置变化
- 脚本变化
- API约定
- 多索引语法
- 索引库名称的日期运算
- 常用选项
- URL-based访问控制
- 文档APIs
- 读写文档
- 索引接口
- Get接口
- Delete API
- Delete By Query API
- Update API
- Update By Query API
- Multi Get API
- Bulk API
- Reindex API
- Term Vectors
- Multi termvectors API
- ?refresh
- 搜索APIs
- Search
- URI Search
- Request Body Search
- Query
- From / Size
- Sort
- Source filtering
- Fields
- Script Fields
- Doc value Fields
- Post filter
- Highlighting
- Rescoring
- Search Type
- Scroll
- Preference
- Explain
- Version
- Index Boost
- min_score
- Named Queries
- Inner hits
- Field Collapsing
- Search After
- Search Template
- Multi Search Template
- Search Shards API
- Suggesters
- Term suggester
- Phrase Suggester
- Completion Suggester
- Context Suggester
- Returning the type of the suggester
- Multi Search API
- Count API
- Validate API
- Explain API
- Profile API
- Profiling Queries
- Profiling Aggregations
- Profiling Considerations
- Field Capabilities API
- Aggregations
- Metrics Aggregations
- 平均值聚合
- 值计数聚合(Value Count Aggregation)
- Cardinality Aggregation
- Extended Stats Aggregation
- 地理边界聚合
- 地理重心聚合
- Max Aggregation
- Min Aggregation
- Percentiles Aggregation
- Percentile Ranks Aggregation
- Scripted Metric Aggregation
- Stats Aggregation
- Sum Aggregation
- Top hits Aggregation
- Value Count Aggregation
- Bucket Aggregations
- 邻接矩阵聚合
- Children Aggregation
- Date Histogram Aggregation
- Date Range Aggregation
- Significant Terms Aggregation
- Filter Aggregation(过滤器聚合)
- Filters Aggregation
- Geo Distance Aggregation(地理距离聚合) 转至元数据结尾
- GeoHash grid Aggregation(GeoHash网格聚合)
- Global Aggregation(全局聚合) 转至元数据结尾
- Histogram Aggregation
- IP Range Aggregation(IP范围聚合)
- Missing Aggregation
- Nested Aggregation(嵌套聚合)
- Range Aggregation(范围聚合)
- Reverse nested Aggregation
- Sampler Aggregation
- Significant Terms Aggregation
- Significant Text Aggregation
- Terms Aggregation
- Pipeline Aggregations
- Avg Bucket Aggregation
- Derivative Aggregation(导数聚合)
- Max Bucket Aggregation
- Min Bucket Aggregation
- Sum Bucket Aggregation
- Stats Bucket Aggregation
- Extended Stats Bucket Aggregation(扩展信息桶聚合)
- Percentiles Bucket Aggregation(百分数桶聚合)
- Moving Average Aggregation
- Cumulative Sum Aggregation(累积汇总聚合)
- Bucket Script Aggregation(桶脚本聚合)
- Bucket Selector Aggregation(桶选择器聚合)
- Serial Differencing Aggregation(串行差异聚合)
- Matrix Aggregations
- Matrix Stats
- Caching heavy aggregations
- Returning only aggregation results
- Aggregation Metadata
- Returning the type of the aggregation
- Indices APIs
- Create Index /创建索引
- Delete Index /删除索引
- Get Index /获取索引
- Indices Exists /索引存在
- Open / Close Index API /启动关闭索引
- Shrink Index /缩小索引
- Rollover Index/滚动索引
- Put Mapping /提交映射
- Get Mapping /获取映射
- Get Field Mapping /获取字段映射
- Types Exists
- Index Aliases
- Update Indices Settings
- Get Settings
- Analyze
- Explain Analyze
- Index Templates
- 索引统计信息
- 索引段
- 索引恢复
- 索引分片存储
- 清理缓存
- 刷新
- 同步刷新
- 重新加载
- 强制合并
- Cat APIs
- cat aliases
- cat allocation
- cat count
- cat fielddata
- cat health
- cat indices
- cat master
- cat nodeattrs
- cat nodes
- cat pending tasks
- cat plugins
- cat recovery
- cat repositories
- cat segments
- cat shards
- cat thread pool
- cat snapshots
- cat templates
- Cluster APIs
- 集群健康
- 集群状态
- 集群统计
- 挂起的集群任务
- 集群重新路由
- Cluster Update Settings
- Nodes Stats
- Nodes Info
- Nodes Feature Usage
- Remote Cluster Info
- Task Management API
- Nodes hot_threads
- Cluster Allocation Explain API
- Query DSL
- 查询context与过滤context
- Match All Query
- 全文搜索
- 匹配查询
- 短语匹配查询
- 短语前缀匹配查询
- 多字段查询
- 常用术语查询
- 查询语句查询
- 简单查询语句
- Term level queries
- Term Query
- Terms Query
- Range Query
- Exists Query
- Prefix Query
- Wildcard Query
- Regexp Query
- Fuzzy Query
- Type Query
- Ids Query
- 复合查询
- Constant Score 查询
- Bool 查询
- Dis Max 查询
- Function Score 查询
- Boosting 查询
- Joining queries
- Has Child Query
- Has Parent Query
- Nested Query(嵌套查询)
- Parent Id Query
- Geo queries
- GeoShape Query(地理形状查询)
- Geo Bounding Box Query(地理边框查询)
- Geo Distance Query(地理距离查询)
- Geo Polygon Query(地理多边形查询)
- Specialized queries
- More Like This Query
- Script Query
- Percolate Query
- Span queries
- Span Term 查询
- Span Multi Term 查询
- Span First 查询
- Span Near 查询
- Span Or 查询
- Span Not 查询
- Span Containing 查询
- Span Within 查询
- Span Field Masking 查询 转至元数据结尾
- Minimum Should Match
- Multi Term Query Rewrite
- Mapping
- Removal of mapping types
- Field datatypes
- Array
- Binary
- Range
- Boolean
- Date
- Geo-point datatype
- Geo-Shape datatype
- IP datatype
- Keyword datatype
- Nested datatype
- Numeric datatypes
- Object datatype
- Text
- Token数
- 渗滤型
- join datatype
- Meta-Fields
- _all field
- _field_names field
- _id field
- _index field
- _meta field
- _routing field
- _source field
- _type field
- _uid field
- Mapping parameters
- analyzer(分析器)
- normalizer(归一化)
- boost(提升)
- Coerce(强制类型转换)
- copy_to(合并参数)
- doc_values(文档值)
- dynamic(动态设置)
- enabled(开启字段)
- eager_global_ordinals
- fielddata(字段数据)
- format (日期格式)
- ignore_above(忽略超越限制的字段)
- ignore_malformed(忽略格式不对的数据)
- index (索引)
- index_options(索引设置)
- fields(字段)
- Norms (标准信息)
- null_value(空值)
- position_increment_gap(短语位置间隙)
- properties (属性)
- search_analyzer (搜索分析器)
- similarity (匹配方法)
- store(存储)
- Term_vectors(词根信息)
- Dynamic Mapping
- Dynamic field mapping(动态字段映射)
- Dynamic templates(动态模板)
- default mapping(mapping中的_default_)
- Analysis
- Anatomy of an analyzer(分析器的分析)
- Testing analyzers(测试分析器)
- Analyzers(分析器)
- Configuring built-in analyzers(配置内置分析器)
- Standard Analyzer(标准分析器)
- Simple Analyzer(简单分析器)
- 空白分析器
- Stop Analyzer
- Keyword Analyzer
- 模式分析器
- 语言分析器
- 指纹分析器
- 自定义分析器
- Normalizers
- Tokenizers(分词器)
- Standard Tokenizer(标准分词器)
- Letter Tokenizer
- Lowercase Tokenizer (小写分词器)
- Whitespace Analyzer
- UAX URL Email Tokenizer
- Classic Tokenizer
- Thai Tokenizer(泰语分词器)
- NGram Tokenizer
- Edge NGram Tokenizer
- Keyword Analyzer
- Pattern Tokenizer
- Simple Pattern Tokenizer
- Simple Pattern Split Tokenizer
- Path Hierarchy Tokenizer(路径层次分词器)
- Token Filters(词元过滤器)
- Standard Token Filter
- ASCII Folding Token Filter
- Flatten Graph Token Filter
- Length Token Filter
- Lowercase Token Filter
- Uppercase Token Filter
- NGram Token Filter
- Edge NGram Token Filter
- Porter Stem Token Filter
- Shingle Token Filter
- Stop Token Filter
- Word Delimiter Token Filter
- Word Delimiter Graph Token Filter
- Stemmer Token Filter
- Stemmer Override Token Filter
- Keyword Marker Token Filter
- Keyword Repeat Token Filter
- KStem Token Filter
- Snowball Token Filter
- Phonetic Token Filter
- Synonym Token Filter
- Synonym Graph Token Filter
- Compound Word Token Filters
- Reverse Token Filter
- Elision Token Filter
- Truncate Token Filter
- Unique Token Filter
- Pattern Capture Token Filter
- Pattern Replace Token Filter
- Trim Token Filter
- Limit Token Count Token Filter
- Hunspell Token Filter
- Common Grams Token Filter
- Normalization Token Filter
- CJK Width Token Filter
- CJK Bigram Token Filter
- Delimited Payload Token Filter
- Keep Words Token Filter
- Keep Types Token Filter
- Classic Token Filter
- Apostrophe Token Filter
- Decimal Digit Token Filter
- Fingerprint Token Filter
- Minhash Token Filter
- Character Filters(字符过滤器)
- HTML Strip Character Filter
- Mapping Character Filter
- Pattern Replace Character Filter
- 模块
- Cluster
- 集群级路由和碎片分配
- 基于磁盘的分片分配
- 分片分配awareness
- 分片分配过滤
- Miscellaneous cluster settings
- Scripting
- Painless Scripting Language
- Lucene Expressions Language
- Advanced scripts using script engines
- Snapshot And Restore
- Thread Pool
- Index Modules(索引模块)
- 预处理节点
- Pipeline Definition
- Ingest APIs
- Put Pipeline API
- Get Pipeline API
- Delete Pipeline API
- Simulate Pipeline API
- Accessing Data in Pipelines
- Handling Failures in Pipelines
- Processors
- Monitoring Elasticsearch
- X-Pack APIs
- X-Pack Commands
- How To
- Testing(测试)
- Glossary of terms
- Release Notes
- X-Pack Release Notes