1、使用docker搜索elasticsearch版本
docker search elasticsearch
或者直接在docker 文档网站上去查找最新支持的elasticsearch镜像版本
https://hub.docker.com/_/elasticsearch
官网有提供具体的安装过程
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html
2、自行摸索安装过程(非官网流程)遇到的一些问题
2.1)先下载最新镜像
指定版本下载
docker pull elastcisearch:7.16.2
2.2) 通过下载的elasticsearch镜像安装elasticsearch容器
docker run -d -p 9200:9200 -p 9300:9300 --name es01 elasticsearch:7.16.2
docker ps -a 看历史容器的状态发现没有安装成功
然后去查看这个容器的日志
docker logs -f 25ea16bb2698(容器id)
发现主要有下面两个报错
2.2.1)bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
这个报错提示vm.max_map_count Linux分配的虚拟内存的数量太低,至少262144
max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上限但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。
解决方案:修改Linux内核参数来调高此值
sysctl -w vm.max_map_count=262144
sysctl -p
2.2.2) bootstrap check failure [2] of [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
报错是指elasticsearch集群首次启动的时候,必须给集群设置一个集群引导,可以选择如下任意一种
cluster.initial_master_nodes 集群初始化的提供的master候选地址,第一次启动时将从该列表中获取master
discovery.seed_hosts 配置该节点会与哪些候选地址进行通信,hostname,ip ,ip port discovery.seed_providers 指定种子地址提供的方式,默认settings,也支持其他Discovery Plugins,包括EC2 Discovery,Azure Classic discovery,GCE discovery( Google Compute Engine discovery )
解决方案:由于不太熟悉集群模式,只能选择单机模式先进行测试
在安装命令中添加 -e "discovery.type=single-node"( discovery.type是指 设定集群模式/单机模式等,默认是单机模式)
ES_JAVA_OPTS="-Xms512m -Xmx512m":指定elasticsearch启动内存,-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些,-Xmx:java heap最大值,使用的最大内存
docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 --name es01 elasticsearch:7.16.2