docker安装Elasticsearch8.x【保姆级教程】

docker安装Elasticsearch8.x

一、开始前准备

Elasticsearch、kibana、IK分词器的版本必须一致,其中Elasticsearch和kibana更新基本同步,IK分词器一般更新慢,需要先查看想安装的Elasticsearch版本是否有对应的IK分词器。ps:我安装当时最新版本8.15.1的时候,es和kibana安装好了之后才发现没有对应版本的IK

1.1 IK分词器下载地址

  • elasticsearch-analysis-ik(一般教程都使用的该地址,无科学上网工具下载速度较慢):https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip
  • infinilabs-analysis-ik(国内下载更快,推荐):https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2

1.2 创建网络

kibana需要链接es,创建一个网络便于通信

docker network create docker_default

docker网络列表

二、安装Elasticsearch

镜像版本tag查询地址:https://hub.docker.com/

2.1 pull 镜像

docker pull elasticsearch:8.12.2

在这里插入图片描述

2.2 创建挂载目录

mkdir /opt/elasticsearch

2.3 不挂载启动

docker run -d \
--restart=always \
--name elasticsearch \
--network docker_default \
-p 9388:9200 \
-p 9389:9300 \
--privileged \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
elasticsearch:8.12.2

2.4 cp初始化文件

docker cp elasticsearch:/usr/share/elasticsearch/data /opt/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/plugins /opt/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/config /opt/elasticsearch/

赋权限
cd /opt/elasticsearch/
chmod 777 config/ data/ plugins/

2.5 删除未挂载启动es容器

docker stop elasticsearch
docker rm elasticsearch

2.6 启动容器并挂载

docker run -d \
--restart=always \
--name elasticsearch \
--network docker_default \
-p 9388:9200 \
-p 9389:9300 \
--privileged \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /opt/elasticsearch/config:/usr/share/elasticsearch/config \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
elasticsearch:8.12.2

2.7 关闭安全验证

1、导航到配置文件位置

cd /opt/elasticsearch/config/

2、vim elasticsearch.yml

默认为true,设置为false
xpack.security.enabled: false

3、保存退出

:wq

4、重启es

docker restart elasticsearch

2.8 验证是否安装成功

访问服务器加端口地址 http://192.168.1.19:9388/

docker run 启动时,我将端口9200映射至了9388

在这里插入图片描述

三、安装kibana

3.1 创建挂载目录

mkdir /opt/kibana

3.2 无挂载启动

docker run -d \
  --restart=always \
  --name kibana \
  --network docker_default \
  -p 5601:5601 \
  --privileged \
  -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
  kibana:8.12.2

ELASTICSEARCH_HOSTS:指定es链接信息

-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \

3.3 cp文件

docker cp kibana:/usr/share/kibana/data /opt/kibana/
docker cp kibana:/usr/share/kibana/config /opt/kibana/

3.4 创建新的挂载容器

1、停止并删除原容器

docker stop kibana
docker rm kibana

2、创建新容器并挂载

docker run -d \
--restart=always \
--name kibana \
--network docker_default \
-p 5601:5601 \
--privileged \
-v /opt/kibana/data:/usr/share/kibana/data \
-v /opt/kibana/config:/usr/share/kibana/config \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:8.12.2

3.5 验证是否安装成功

输入服务器ip地址+端口,如192.168.1.19:5601
在这里插入图片描述

四、安装IK分词器

4.1 以root用户身份进入容器

docker exec -u 0 -it elasticsearch /bin/bash

4.2 cd到bin

cd /usr/share/elasticsearch/bin/

4.3 执行下载

./elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2

在这里插入图片描述

4.4 重启es

docker restart elasticsearch

五、问题记录及解决方案

5.1 启动报错文件缺失 Missing logging config file

ERROR: Missing logging config file at /usr/share/elasticsearch/config/log4j2.properties, with exit code 78
ERROR: Missing logging config file at /usr/share/elasticsearch/config/log4j2.properties, with exit code 78
ERROR: Missing logging config file at /usr/share/elasticsearch/config/log4j2.properties, with exit code 78

挂载卷覆盖问题。挂载的本地目录覆盖了容器内部的默认目录内容,导致配置文件无法正常加载或丢失,创建了挂载目录,直接挂载启动会出现该问题,因为挂载目录为空,没有配置文件等信息。

解决方案:先启动一个无挂载的es,将容器中的data、config、plugins文件夹cp到挂载目录,再挂载启动。

5.2 权限不足,plugin requires additional permissions

elasticsearch@d12e46f67ad5:~/bin$ ./elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
-> Installing https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
-> Downloading https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Failed installing https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
-> Rolling back https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
-> Rolled back https://get.infini.cloud/elasticsearch/analysis-ik/8.12.2
Exception in thread "main" java.nio.file.FileSystemException: /usr/share/elasticsearch/config/analysis-ik: Operation not permitted
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixFileAttributeViews$Posix.setOwners(UnixFileAttributeViews.java:291)
        at java.base/sun.nio.fs.UnixFileAttributeViews$Posix.setOwner(UnixFileAttributeViews.java:313)
        at org.elasticsearch.plugins.cli.InstallPluginAction.setOwnerGroup(InstallPluginAction.java:1077)
        at org.elasticsearch.plugins.cli.InstallPluginAction.installConfig(InstallPluginAction.java:1051)
        at org.elasticsearch.plugins.cli.InstallPluginAction.installPluginSupportFiles(InstallPluginAction.java:974)
        at org.elasticsearch.plugins.cli.InstallPluginAction.installPlugin(InstallPluginAction.java:943)
        at org.elasticsearch.plugins.cli.InstallPluginAction.execute(InstallPluginAction.java:254)
        at org.elasticsearch.plugins.cli.InstallPluginCommand.execute(InstallPluginCommand.java:89)
        at org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:54)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:85)
        at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:94)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:85)
        at org.elasticsearch.cli.Command.main(Command.java:50)
        at org.elasticsearch.launcher.CliToolLauncher.main(CliToolLauncher.java:64)

解决方案:以root用户进入容器安装,docker exec -u 0 -it elasticsearch /bin/bash

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值