Docker安装Elasticsearch7.17.9
1.设置max_map_count
查看max_map_count的值: 默认是65530
[root@localhost data-docker]# cat /proc/sys/vm/max_map_count
65530
[root@localhost data-docker]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
2.拉取镜像
#拉取镜像
docker pull elasticsearch:7.17.9
#查看镜像
docker images
3.创建Elasticsearch容器
#1、创建Elasticsearch配置文件夹
mkdir -p /usr/local/data-docker/elasticsearch/config
#2、创建Elasticsearch数据文件夹
mkdir -p /usr/local/data-docker/elasticsearch/data
#3、创建Elasticsearch插件文件夹(如:ik)
mkdir -p /usr/local/data-docker/elasticsearch/plugins
#说明:目的将CentOS本地的文件夹映射到Elasticsearch容器,以实现容器数据的持久化到CentOS本地,以及通过CentOS本地文件夹内容的修改同步到容器
#创建并写入elasticsearch.yml配置,注意:http.host: 0.0.0.0 冒号后有一空格
echo "http.host: 0.0.0.0">>/usr/local/data-docker/elasticsearch/config/elasticsearch.yml
给elasticsearch文件夹赋权
chmod -R 777 elasticsearch/
启动容器:
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.9
查看容器是否启动成功:
[root@localhost data-docker]# docker ps -a
4.测试
浏览器访问ip:9200 如果出现以下界面就是安装成功!

为了避免出现elasticsearch启动后,报java.lang.OutOfMemoryError: Java heap space的错误,建议修改容器内的config目录下jvm.options文件。
-Xms4g # 设置最小堆为4g
-Xmx4g # 设置最大堆为4g
5.Docker启动容器自启
docker update --restart=always elasticsearch
6.安装elasticsearch-head
#拉取镜像
docker pull mobz/elasticsearch-head:5
#创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
#启动容器
docker start elasticsearch-head
解决跨域问题,需要在服务端做CORS的配置。
cd /usr/local/data-docker/elasticsearch/config/elasticsearch.yml
vim elasticsearch.yml
在最下面添加2行:
http.cors.enabled: true
http.cors.allow-origin: "*"
浏览器打开: http://IP:9100
