使用 Docker 安装 Elasticsearch 8.4.3
前言
从 Elasticsearch 8.0 开始,默认启用安全性。启用安全性后,Elastic Stack 安全功能需要对传输网络层进行 TLS 加密,否则您的集群将无法启动。
确保为 Docker 分配至少 4GiB 内存。
一. 拉取 Elasticsearch Docker 镜像
docker pull elasticsearch:8.4.3
二. 使用Docker启动单节点集群
以下命令启动单节点 Elasticsearch 集群以进行开发或测试。
-
为 Elasticsearch 和 Kibana 创建新的 docker 网络
docker network create elastic
-
在 Docker 中启动 Elasticsearch。为用户生成密码
elastic
并输出到终端,以及用于注册 Kibana 的注册令牌。docker run --name es01 --net elastic -p 9200:9200 -it elasticsearch:8.4.3
启动成功后我们可以看到,在 Docker 容器中启动单节点 Elasticsearch 集群,系统会自动为您启用和配置安全性。当您第一次启动 Elasticsearch 时,会自动进行以下安全配置:
- 为传输层和 HTTP 层生成 证书和密钥。
- 传输层安全 (TLS) 配置设置写入
elasticsearch.yml
. - 生成默认的用户
elastic``和密码xY0mlsaMNyX=rIdktpmk
。 - 为 Kibana 生成注册令牌。
- 测试
三. 修改密码
- 复制生成的密码和注册令牌并将其保存在安全位置。这些值仅在您第一次启动 Elasticsearch 时显示。
elastic
如果您需要重置用户或其他内置用户的密码,请运行该elasticsearch-reset-password
工具。该工具位于 Elasticsearch 容器的/bin
目录中。
- 参数
-
-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 elasticsearch bash
bin/elasticsearch-reset-password -u elastic
QYFJGP+92Ory5ntLvaAW
指定用户重置密码:
bin/elasticsearch-reset-password --username elastic -i
以下示例将用户名的本机用户的密码重置user2
为自动生成的值,并在控制台中打印新密码。指定的 URL 指示 elasticsearch-reset-password 工具尝试访问本地 Elasticsearch 节点的位置:
bin/elasticsearch-reset-password --url "https://172.0.0.3:9200" --username user2 -i