Docker安装部署ElasticSearch
参考文档:
https://blog.csdn.net/qq_37726813/article/details/129917352
https://blog.csdn.net/yangkei/article/details/126837326
https://blog.csdn.net/yangkei/article/details/126837326
1.部署单点ElasticSearch
因为我们还需要部署kibana
容器,因此需要让ElasticSearch
和kibana
容器互联。这里先创建一个网络:
1.2.拉取镜像
考虑到ElasticSearch
的兼容性,这里ElasticSearch
、kibana
统一下载8.8.1版本
1 2 | # 拉取镜像 docker pull elasticsearch: 8.8 . 1 |
1.3.第一次执行docker
脚本
1 2 3 4 5 6 7 8 9 10 | docker run -it \ -p 9200 : 9200 \ -p 9300 : 9300 \ --name es \ --net es-net \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -e LANG=C.UTF- 8 \ -e LC_ALL=C.UTF- 8 \ elasticsearch: 8.6 . 2 |
1.4.创建Elasticsearch
挂载目录
1 | mkdir -p ~/data/elasticsearch |
1.5.给创建的文件夹授权
1 | sudo chown -R 1000 : 1000 ~/data/elasticsearch |
1.6.将容器内的文件复制到主机上
1 2 3 4 | docker cp es:/usr/share/elasticsearch/config ~/data/elasticsearch docker cp es:/usr/share/elasticsearch/data ~/data/elasticsearch docker cp es:/usr/share/elasticsearch/plugins ~/data/elasticsearch docker cp es:/usr/share/elasticsearch/logs ~/data/elasticsearch |
1.7.删除容器
1 | docker rm -f es |
1.8.修改docker
脚本,增加-v挂载目录和-d参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | docker run -d \ --name es \ --privileged \ --network es-net \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -e LANG=C.UTF- 8 \ -e LC_ALL=C.UTF- 8 \ -p 9200 : 9200 \ -p 9300 : 9300 \ -v es-data:~/data/elasticsearch/data \ -v es-plugins:~/data/elasticsearch/plugins \ -v es-logs:~/data/elasticsearch/logs \ elasticsearch: 8.8 . 1 |
1.9.修改配置~/data/elasticsearch/config/elasticsearch.yml
:
1.10.重启容器
1 | docker restart es |
1.11.Elasticsearch
.8X
以上默认开启了X-Pack
安全功能
说明:请求Elasticsearch
必须使用https
测试:https://127.0.0.1:9200/
1.12.如果账户密码忘了,设置修改账号密码如下:
1 2 3 4 | docker exec -it es /bin/bash cd /usr/share/elasticsearch/bin ./elasticsearch-setup-passwords interactive |
ElasticSearch
设置后账户:elastic
,密码:123456
2.部署kibana
kibana
可以给我们提供一个ElasticSearch
的可视化界面,便于我们使用。
2.1.拉取镜像
1 | docker pull kibana: 8.8 . 1 |
2.2.第一次执行docker
启动脚本
1 2 3 4 5 6 7 8 9 10 | docker run -it \ -d \ --restart=always \ --log-driver json-file \ --log-opt max-size=100m \ --log-opt max-file= 2 \ --name kibana \ -p 5601 : 5601 \ --net es-net \ kibana: 8.8 . 1 |
2.3.创建kibana
挂载目录
1 | mkdir -p ~/data/kibana |
2.4.给创建的文件夹授权
1 | sudo chown -R 1000 : 1000 ~/data/kibana |
2.5.将容器内的文件复制到主机上
1 2 3 4 | docker cp kibana:/usr/share/kibana/config ~/data/kibana docker cp kibana:/usr/share/kibana/data ~/data/kibana docker cp kibana:/usr/share/kibana/plugins ~/data/kibana docker cp kibana:/usr/share/kibana/logs ~/data/kibana |
2.6.删除容器
1 | docker rm -f kibana |
2.7.修改配置文件/home/elk8.6.2/kibana/config/kibana.yml
:
- 增加:
i18n.locale: “zh-CN”
- 修改:
elasticsearch.hosts: [‘https://172.20.0.2:9200’]
,将IP
改成elasticsearch
的docker ip
,注意一定要用https
- 增加,不验证ssl:elasticsearch.ssl.verificationMode: none
- 设置用户名密码:lasticsearch.username: "kibana_system"、elasticsearch.password: "123456"
2.8.修改docker
启动脚本,增加挂载目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | docker run -it \ -d \ -e ELASTICSEARCH_HOSTS=https: //es:9200 \ -p 5601 : 5601 \ --restart=always \ --log-driver json-file \ --log-opt max-size=100m \ --log-opt max-file= 2 \ --name kibana \ --net es-net \ -v ~/data/kibana/config:/usr/share/kibana/config \ -v ~/data/kibana/data:/usr/share/kibana/data \ -v ~/data/kibana/plugins:/usr/share/kibana/plugins \ -v ~/data/kibana/logs:/usr/share/kibana/logs \ kibana: 8.8 . 1 |
2.9.查看kibana
日志
1 | docker logs -f kibana |
此时,在浏览器输入地址访问:http://127.0.0.1:5601
,即可看到结果。
账号密码是kibana.yml中配置的用户名密码
2.10.DevTools
kibana
中提供了一个DevTools
界面:
这个界面中可以编写DSL
来操作elasticsearch
。并且对DSL
语句有自动补全功能。
4.部署es
集群
署es
集群可以直接使用docker-compose
来完成,不过要求你的Linux
虚拟机至少有4G
的内存空间
首先编写一个docker-compose
文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch: 8.6 . 2 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock= true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: - 1 hard: - 1 volumes: - data01:/usr/share/elasticsearch/data ports: - 9200 : 9200 networks: - elastic es02: image: docker.elastic.co/elasticsearch/elasticsearch: 8.6 . 2 container_name: es02 environment: - node.name=es02 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock= true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: - 1 hard: - 1 volumes: - data02:/usr/share/elasticsearch/data networks: - elastic es03: image: docker.elastic.co/elasticsearch/elasticsearch: 8.6 . 2 container_name: es03 environment: - node.name=es03 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock= true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: - 1 hard: - 1 volumes: - data03:/usr/share/elasticsearch/data networks: - elastic volumes: data01: driver: local data02: driver: local data03: driver: local networks: elastic: driver: bridge |
运行docker-compose
以启动集群:
1 | docker-compose up |
遇到的问题:
1、es 登陆时需要用https
2、es 账号密码需要重置,
1 2 3 4 | 设置账号密码 docker exec -it es /bin/bash cd /usr/share/elasticsearch/bin ./elasticsearch-setup-passwords interactive |
4、kibana 启动报错:
参考文档:https://blog.csdn.net/yangkei/article/details/126837326
1 | [ 2022 - 09 -06T19: 47 : 01.491 - 04 : 00 ][ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. security_exception: [security_exception] <br>Reason: unable to authenticate user [kibana_system] for REST request [/_nodes?filter_path=nodes.*.version%2Cnodes.*.http.publish_address%2Cnodes.*.ip] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 1 . kibana启动报错,kibana_system用户认证 [ 2022 - 09 -06T19: 47 : 01.491 - 04 : 00 ][ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. security_exception: [security_exception] Reason: unable to authenticate user [kibana_system] for REST request [/_nodes?filter_path=nodes.*.version%2Cnodes.*.http.publish_address%2Cnodes.*.ip] 解决办法:设置kibana_system用户的密码。 [es @goya1 cert]$ elasticsearch-reset-password -u kibana_system -i warning: ignoring JAVA_HOME=/app/elasticsearch/jdk; using bundled JDK This tool will reset the password of the [kibana_system] user. You will be prompted to enter the password. Please confirm that you would like to continue [y/N]y Enter password for [kibana_system]: changeit123 Re-enter password for [kibana_system]: changeit123 Password for the [kibana_system] user successfully reset. 修改,确认kibana.yml文件的配置部分: # If your Elasticsearch is protected with basic authentication, these settings provide # the username and password that the Kibana server uses to perform maintenance on the Kibana # index at startup. Your Kibana users still need to authenticate with Elasticsearch, which # is proxied through the Kibana server. elasticsearch.username: "kibana_system" elasticsearch.password: "changeit123" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?