【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2

文章目录
简介
在本文中,我将为您介绍如何在Docker中安装ElasticSearch 8.6.2。ElasticSearch是一个流行的开源搜索和分析引擎,可以帮助您快速、准确地搜索和分析数据。通过在Docker中安装ElasticSearch,您可以轻松地部署和管理您的ElasticSearch实例,并确保系统的可移植性和可靠性。
准备
在安装ElasticSearch之前,您需要在计算机上安装Docker。Docker是一个跨平台的容器化技术,可以帮助您快速、可靠地构建和部署应用程序。
要安装Docker,请访问Docker官方网站并下载适合您操作系统的版本。安装程序会自动下载和安装Docker引擎,并将其添加到您的计算机中。
确保为 Docker 分配了至少 4GiB 的内存。
下载映像
在安装ElasticSearch之前,您需要从Docker Hub下载ElasticSearch映像。Docker Hub是一个Docker映像仓库,可以帮助您快速找到、下载和部署各种开源软件。
要下载ElasticSearch映像,请在终端中输入以下命令:
docker pull elasticsearch:8.6.2
运行
创建网络
docker network create elastic
在 Docker 中创建Elasticsearch容器。为用户elastic生成密码,并且 输出到终端,以及用于注册 Kibana 的注册令牌。
docker run --name es01 --net elastic -p 9200:9200 -it elasticsearch:8.6.2
运行成功后,输出用户elastic密码等信息,复制生成的密码和注册令牌,并将其保存在安全的环境中 位置。这些值仅在您第一次启动 Elasticsearch 时显示。

单机测试
复制证书
将http_ca.crt安全证书从Docker容器复制到本地计算机。
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

访问接口
使用从Docker容器复制的http_ca.crt文件,通过进行经过身份验证的调用来验证是否可以连接到Elasticsearch集群。提示时输入用户elastic的密码。

集群
第一次启动Elasticsearch时,安装过程默认配置单节点集群。此过程还生成注册令牌并将其打印到您的终端。如果要节点加入现有群集,请使用生成的注册令牌启动新节点。
注册令牌的有效期为30分钟。失效请参照下文重置注册令牌
在您启动第一个节点的终端中,复制生成的注册令牌,用于添加新的Elasticsearch节点。

在您的新节点上,启动Elasticsearch并包含生成的注册令牌
docker run -e ENROLLMENT_TOKEN="eyJ2ZXIiOiI4LjYuMiIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiMTU4Mjg1ZTA1ODIwYTc3MjgxNDE2YjgzNDA3YzlmNjcxNzBlNWJhODliYzU0MTQxOTgyYTYwZjgyZDM1NmQ3MiIsImtleSI6Ik84UG1YSWNCeUNUelowUlRoX2VJOjlZSHpYd3VmU1FXUUxwMDdlVFNTNFEifQ==" --name es02 --net elastic -it elasticsearch:8.6.2
<token>换成复制的注册令牌
执行命令,将Elasticsearch配置为加入现有集群。
过期示例
重置注册令牌
如果需要生成新的注册令牌,请在现有节点上运行elasticsearch-create-enrollment-token 工具。此工具可在Docker容器的Elasticsearch /bin目录中使用。
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
参数
-E <KeyValuePair>
配置标准Elasticsearch或X-Pack设置。
-f, --force
强制命令针对不健康的群集运行。
-h, --help
返回所有命令参数。
-s, --scope
指定生成的令牌的范围。支持的值为node和kibana。
--url
指定该工具用于向Elasticsearch提交API请求的基本URL (本地节点的主机名和端口)。默认值是根据elasticsearch.yml文件中的设置确定的。如果xpack.security.http.ssl.enabled设置为true,则必须指定HTTPS URL
示例
创建一个注册令牌,用于将Elasticsearch节点注册到集群中:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
创建一个注册令牌,用于将Kibana实例注册到集群中。指定的URL指示elasticsearch-create-enrollment-toke工具试图到达本地Elasticsearch节点的位置:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana --url "https://172.0.0.3:9200"
重置密码
如果您需要重置用户的密码或其他 内置用户,运行elasticsearch-reset-password 工具。 此工具位于 Docker 容器的 Elasticsearch 目录中。 例如:elastic /bin
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password
参数
-a, --auto
将指定用户的密码重置为自动生成的强密码。(默认)
b, --batch
运行重置密码进程,而不提示用户进行验证。
-E <KeyValuePair>
配置标准Elasticsearch或X-Pack设置。
-f, --force
强制命令针对不健康的群集运行。
-h, --help
返回所有命令参数。
-i, --interactive
提示输入指定用户的密码。使用此选项可以显式设置密码。
-s --silent
在控制台中显示最小输出。
-u, --username
原生领域用户或内置用户的用户名。
--url
指定该工具用于向Elasticsearch提交API请求的基本URL (本地节点的主机名和端口)。默认值是根据elasticsearch.yml文件中的设置确定的。如果xpack.security.http.ssl.enabled设置为true,则必须指定HTTPS URL。
-v --verbose
在控制台中显示详细输出。
示例
将elastic用户的密码重置为自动生成的值,并在控制台中打印新密码:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
在终端中提示所需密码后,重置用户名为user1的本机用户的密码:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password --username user1 -i
将用户名为user2的本机用户的密码重置为自动生成的值,从而在控制台中打印新密码。指定的URL表示elasticsearch-reset-password工具试图到达本地Elasticsearch节点的位置:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password --url "https://172.0.0.3:9200" --username user2 -i
常见错误
第二个节点启动时第一个节点所在的容器退出的问题
如果遇到第二个节点启动时第一个节点所在的容器退出的问题,请显式设置JVM堆大小的值。要手动配置堆大小,请在启动每个节点时包含ES_JAVA_OPTS变量并为-Xms和-Xmx设置值。例如,以下命令启动节点es02,并将最小和最大JVM堆大小设置为1 GB:
docker run -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e ENROLLMENT_TOKEN="<token>" --name es02 -p 9201:9200 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.6.2
vm.max_map_count [65530] is too low
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
创建容器输出以下错误

linux
vi /etc/sysctl.conf
在最后一行加入
vm.max_map_count=262144

重启
sysctl -p

删除创建失败的容器再次创建
docker rm es01
docker run --name es01 --net elastic -p 9200:9200 -it elasticsearch:8.6.2
Windows and macOS with Docker Desktop
必须通过docker-machine设置vm.max_map_count设置:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
Windows with Docker Desktop WSL 2 backend
必须在docker-desktop容器中设置vm.max_map_count设置:
wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
官网文档
Install Elasticsearch with Docker



