使用Docker安装ElasticSearch8.x


启动一个单节点ES集群

1)安装Docker环境

快速在线安装Docker,一分钟搞定,包括可以的镜像加速器

2)创建一个新的docker网络

docker network create elastic

3)  拉取ES的docker镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.17.0 #如果拉取很慢,可以使用我的镜像 docker pull registry.cn-hangzhou.aliyuncs.com/tulingfox/elasticsearch:8.17.0

4)启动Elasticsearch容器

docker run -d --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.17.0#或者docker run -d --name es01 --net elastic -p 9200:9200 -it -m 1GB registry.cn-hangzhou.aliyuncs.com/tulingfox/elasticsearch:8.17.0

使用-m表示为容器设置内存限制,这样就不需要手动设置JVM大小。

如果想使用机器学习功能,可以用下面的命令启动容器:

docker run -d --name es01 --net elastic -p 9200:9200 -it -m 6GB -e "xpack.ml.use_auto_machine_memory_percent=true" docker.elastic.co/elasticsearch/elasticsearch:8.17.0

该命令会打印Kibana的elastic用户密码和注册令牌

5)复制生成的elastic密码和注册令牌。这些凭证仅在第一次启动Elasticsearch时显示。可以使用以下命令重新生成凭据。

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elasticdocker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

建议将elastic密码存储为shell中的环境变量:

export ELASTIC_PASSWORD="your_password"


6) 将 SSL 证书(http_ca.crt)从容器复制到本地机器。

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


7)通过发送 REST API 请求来确认 Elasticsearch 容器是否正在正常运行。

curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200


添加更多ES节点

1) 使用现有节点为新节点生成注册令牌。

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

注册令牌的有效期为30分钟。


2) 启动一个新的Elasticsearch容器。将注册令牌作为环境变量。

docker run -e ENROLLMENT_TOKEN="" --name es02 --net elastic -it -m 1GB registry.cn-hangzhou.aliyuncs.com/tulingfox/elasticsearch:8.17.0

token替换为第一步生成的注册令牌。

docker run -d -e ENROLLMENT_TOKEN="eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTcyLjIxLjAuMjo5MjAwIl0sImZnciI6ImZlYWRjOTMxYTk1ZmQyNjUyM2Q4MTczNjQ4NGJiODAyZDllZWQ5ZTg0Y2I1N2Y5MDgzY2VhZDVjOGQ5MTBkZGMiLCJrZXkiOiJQcDdtOTVNQjNwWWk4UXVSVlFiRzoxV0laQ3BpbFJDaWJiZzlXeVdsa3F3In0=" --name es02 --net elastic -it -m 1GB registry.cn-hangzhou.aliyuncs.com/tulingfox/elasticsearch:8.17.0


3)调用cat nodes API来验证节点是否已添加到集群中。

curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200/_cat/nodes


运行Kibana

1) 拉取Kibana Docker镜像。

docker pull docker.elastic.co/kibana/kibana:8.17.0#如果拉取很慢,可以使用我的镜像docker pull registry.cn-hangzhou.aliyuncs.com/tulingfox/kibana:8.17.0


2)启动Kibana容器

docker run -d --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.17.0#或者docker run -d --name kib01 --net elastic -p 5601:5601 registry.cn-hangzhou.aliyuncs.com/tulingfox/kibana:8.17.0
当Kibana启动时,它会输出一个唯一生成的链接。

要访问Kibana,可以在web浏览器中打开此链接。


3)在浏览器中,输入启动Elasticsearch时生成的注册令牌。

要重新生成令牌,可以运行:

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

输入注册令牌后会弹出提示,需要输入验证码

执行下面的命令获取验证码

docker exec -it kib01 /usr/share/kibana/bin/kibana-verification-code

输入验证码后开始配置

配置完成后进入kibana登录界面

4)以elastic用户登录Kibana,使用启动Elasticsearch时生成的密码。

要重新生成密码,可以运行:

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

如果文章对你有帮助,请点个关注! 接下来我会分享使用Docker Compose启动一个多节点ES集群。




请使用浏览器的分享功能分享到微信等