# Docker ElasticSearch
docker hub 的 https://hub.docker.com/_/elasticsearch (opens new window) 。
当前(2021-04-02)的 7 版本最新的是 7.12.0 ,6 版本最新的是 6.8.15。(没有 latest 版本)
警告
支持 Window 7 操作系统的最后一个 es 版本是 7.10.2,再高你就要换系统了。 但是 docker 镜像里只有 7.10.1 版本。
# 1. 安装及测试
# 查询中央仓库
docker search -f is-official=true elasticsearch
# 从中央仓库下载
docker pull elasticsearch:7.10.1
# 或,直接导入已有的镜像文件
# docker load -i elasticsearch-7.10.1.tar
# 查看本地镜像
docker images
# 会出现类似以下内容:
# REPOSITORY TAG IMAGE ID CREATED SIZE
# elasticsearch 7.10.1 558380375f1a 8 months ago 774MB
运行容器:
删除曾经已有的同名容器
docker rm -f es-test
创建并运行 elasticsearch 容器的语法
docker 运行 elasticsearch 时,有可能会报如下错误:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法是:在
/etc/sysctl.conf
文件最后添加一行:vm.max_map_count=262144
后执行命令sysctl -p
。echo "vm.max_map_count=262144" >> /etc/sysctl.conf
运行 es
docker run \ -d \ --name <指定容器名> \ -p <指定宿主机端口>:9200 \ -p <指定宿主机端口>:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ elasticsearch:7.10.1
-e "discovery.type=single-node":表示单节点运行。
-e ES_JAVA_OPTS="-Xms256m -Xmx256m":设置初始内存和最大内存。
例如:
docker run \ -d \ --name es-test \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ elasticsearch:7.10.1
验证安装成功
通过 docker ps 查看容器的运行信息:
docker ps
会看到类似如下信息:
略
访问网址
http://主机IP:9200/
,会有一点点延迟,会看到类似如下内容:{ "name" : "dc1ef18d9e47", "cluster_name" : "docker-cluster", "cluster_uuid" : "j99YYT-CRISTsoxgXEB6MA", "version" : { "number" : "6.8.5", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96", "build_date" : "2019-10-28T20:40:44.881551Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
# 2. 配置与挂载
Docker ES Server 的数据的存储目录是容器内部的 /usr/share/elasticsearch/data 。
Docker ES Server 的配置文件是容器内部的 /usr/share/elasticsearch/config/elasticsearch.yml 。
该配置文件的内容只有 2 行:
cluster.name: "docker-cluster" network.host: 0.0.0.0
示例
# 删除曾经已有的同名容器 docker rm -f es-9200 # 创建本机挂载目录 mkdir -p ~/docker/9200/data touch ~/docker/9200/config/elasticsearch.yml # 创建并运行容器 docker run \ -d \ --name es-9200 \ -p 9200:9200 \ -p 9300:9300 \ -v ~/docker/9200/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v ~/docker/9200/data:/usr/share/elasticsearch/data \ -v ~/docker/9200/plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ elasticsearch:7.10.1
# 3. 通过 docker-compose 启动
version: '3'
services:
elasticsearch:
image: elasticsearch:7.10.1
container_name: es
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- ~/docker/es/9200/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ~/docker/es/9200/data:/usr/share/elasticsearch/data
- ~/docker/es/9200/plugins:/usr/share/elasticsearch/plugins
ports:
- "9200:9200"
- "9300:9300"