【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2

文章目录

  • 简介
  • 准备
  • 下载映像
  • 运行
  • 单机测试
  • 集群
  • 重置注册令牌
    • 参数
    • 示例
  • 重置密码
    • 参数
    • 示例
  • 常见错误
    • 第二个节点启动时第一个节点所在的容器退出的问题
    • vm.max_map_count [65530] is too low
      • linux
      • Windows and macOS with Docker Desktop
      • Windows with Docker Desktop WSL 2 backend
  • 官网文档

简介

在本文中,我将为您介绍如何在Docker中安装ElasticSearch 8.6.2。ElasticSearch是一个流行的开源搜索和分析引擎,可以帮助您快速、准确地搜索和分析数据。通过在Docker中安装ElasticSearch,您可以轻松地部署和管理您的ElasticSearch实例,并确保系统的可移植性和可靠性。

准备

在安装ElasticSearch之前,您需要在计算机上安装DockerDocker是一个跨平台的容器化技术,可以帮助您快速、可靠地构建和部署应用程序。

要安装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 时显示。
【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第1张图片

单机测试

复制证书
http_ca.crt安全证书从Docker容器复制到本地计算机。

docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

在这里插入图片描述

访问接口
使用从Docker容器复制的http_ca.crt文件,通过进行经过身份验证的调用来验证是否可以连接到Elasticsearch集群。提示时输入用户elastic的密码。
【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第2张图片

集群

第一次启动Elasticsearch时,安装过程默认配置单节点集群。此过程还生成注册令牌并将其打印到您的终端。如果要节点加入现有群集,请使用生成的注册令牌启动新节点。

注册令牌的有效期为30分钟。失效请参照下文重置注册令牌

在您启动第一个节点的终端中,复制生成的注册令牌,用于添加新的Elasticsearch节点。
【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第3张图片
在您的新节点上,启动Elasticsearch并包含生成的注册令牌

docker run -e ENROLLMENT_TOKEN="eyJ2ZXIiOiI4LjYuMiIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiMTU4Mjg1ZTA1ODIwYTc3MjgxNDE2YjgzNDA3YzlmNjcxNzBlNWJhODliYzU0MTQxOTgyYTYwZjgyZDM1NmQ3MiIsImtleSI6Ik84UG1YSWNCeUNUelowUlRoX2VJOjlZSHpYd3VmU1FXUUxwMDdlVFNTNFEifQ==" --name es02 --net elastic -it elasticsearch:8.6.2

换成复制的注册令牌

执行命令,将Elasticsearch配置为加入现有集群。

过期示例
【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第4张图片

重置注册令牌

如果需要生成新的注册令牌,请在现有节点上运行elasticsearch-create-enrollment-token 工具。此工具可在Docker容器的Elasticsearch /bin目录中使用。

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

参数

-E
配置标准ElasticsearchX-Pack设置。

-f, --force
强制命令针对不健康的群集运行。

-h, --help
返回所有命令参数。

-s, --scope
指定生成的令牌的范围。支持的值为nodekibana

--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
配置标准ElasticsearchX-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="" --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]

创建容器输出以下错误
【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第5张图片

linux

 vi /etc/sysctl.conf

在最后一行加入

vm.max_map_count=262144

【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第6张图片
重启

sysctl -p

【ElasticSearch】Docker安装最新版ElasticSearch 8.6.2_第7张图片
删除创建失败的容器再次创建

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

你可能感兴趣的:(#,Docker,docker,elasticsearch,容器)