# 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