docker安装elasticsearch8.4.1

No.1 设置 vm.max_map_count
1
sudo vim /etc/sysctl.conf

添加 vm.max_map_count = 262144

1
sudo vim /etc/sysctl.conf

执行 sudo sysctl -p

1
sudo sysctl -p
No.2 拉取 elasticsearch 8.4.1
1
docker pull elasticsearch:8.4.1
No.3 启动 elasticsearch 8.4.1
1
2
3
4
5
docker run \
--name es8 \
-p 9200:9200 \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
-idt elasticsearch:8.4.1

-i:以交互模式运行容器,通常与-t同时使用
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
写在一起就是组合命令 -id -it -itd

No.4 重置密码

进入容器

1
docker exec -it es8 /bin/bash

重置密码

1
bin/elasticsearch-reset-password -u elastic

输入y确认

No.5 访问测试

浏览器打开 https://localhost:9200/
账号 elastic
密码 刚才重置的新密码

No.6 安装 elasticsearch-head插件

点我下载elasticsearch-head插件
解压,使用chrome导入插件

No.7 集群扩容

进入刚才启动的es获取token

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

启动第二个es

1
2
3
4
5
6
docker run \
-e ENROLLMENT_TOKEN="{{上一步获取的token}}" \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
--name es-0002 \
-e "node.name=es-0002" \
-idt elasticsearch:8.4.1
No.8 其他

可以在docker中创建一个网络专门给es使用

1
docker network create elastic

启动容器时候指定网络就行了
–net 参数

1
2
3
4
5
6
7
docker run \
-e ENROLLMENT_TOKEN="{{上一步获取的token}}" \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
--name es-0002 \
-e "node.name=es-0002" \
--net elastic \
-idt elasticsearch:8.4.1