首先拉取elasticsearch和kibana镜像
docker pull elasticsearch:8.4.1
docker pull kibana:8.4.1
如果遇到镜像拉去不下来,遇到如下问题:
[ERROR] error pulling image configuration: Get "
https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d9/d938dda2c6698adc94f7fdfd5ea8dafda26277d26b9b8f1
67407107648b09678/data?verify=1718723835-otFxVzLAZoGY8jD6gkUl4LzyxRU%3D": dial tcp 128.242.240.20:443: connect: connection refused
需要修改下doker的镜像配置文件,一般在/etc/docker/daemon.json文件中,添加以下文件:
"registry-mirrors":
["https://p8dc1q6z.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud" ]
镜像拉取成功后,我们自定义个网络,以后启动就基于该网络就好了,
docker network create elastic
详细解释:
docker: 这是Docker命令行工具的命令前缀,用于与Docker守护进程交互,执行各种容器管理和系统配置任务。
network create: 这是Docker命令中的一个子命令,用于创建一个新的网络。Docker网络是用来连接容器的虚拟网络,可以让容器之间以及容器与宿主机之间的通信更加灵活和安全。Docker提供了几种网络类型,包括桥接网络(默认)、主机网络、overlay网络以及自定义网络等。
elastic: 这是你要创建的网络的名称。在Docker中,网络名称是唯一的,用于标识和引用特定的网络。选择elastic可能是为了表明这个网络将用于连接Elasticsearch相关的容器或者其他需要弹性网络配置的服务。命名网络使得管理和服务发现变得更加直观。
下面我们就可以启动elasticsearch镜像了,
docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e CLI_JAVA_OPTS="-Xms512m -Xmx512m" \
-v esplugins:/usr/share/elasticsearch/plugins \
-it elasticsearch:8.4.1
参数解释:
docker run: 这个命令用于启动一个新的容器。
–name elasticsearch: 指定容器的名称为elasticsearch,便于后续引用和管理。
–net elastic: 指定容器加入名为elastic的网络,这个网络应该事先通过docker network create elastic命令创建。这样做可以更好地控制容器间的网络连接和隔离。
-p 9200:9300 -p 9200:9200: 映射容器的端口到宿主机的端口。这里有一个小错误,应该是-p 9200:9200 -p 9300:9300,分别将容器的9200端口(HTTP接口)和9300端口(TCP通信端口)映射到宿主机的相同端口,允许外部访问Elasticsearch服务。
-e “discovery.type=single-node”: 设置环境变量,指定Elasticsearch的发现类型为单节点模式。这适用于仅用于开发、测试或不需要集群功能的场景。
-e CLI_JAVA_OPTS=“-Xms512m -Xmx512m”: 这里有一点误导,正确的环境变量应该是ES_JAVA_OPTS而不是CLI_JAVA_OPTS,用于设置Java虚拟机的初始堆内存和最大堆内存。正确的设置应为-e ES_JAVA_OPTS=“-Xms512m -Xmx512m”,意在限制Elasticsearch使用的Java堆内存大小为最小512MB,最大512MB。
-v esplugins:/usr/share/elasticsearch/plugins: 使用卷挂载,将宿主机上的esplugins目录挂载到容器内的/usr/share/elasticsearch/plugins目录。这允许在宿主机上持久化存储Elasticsearch的插件,并且可以在容器重启时保持插件安装状态。
-it: 使容器的标准输入保持打开,并且分配一个伪TTY,通常用于需要交互的容器。但在运行服务容器(如Elasticsearch)时,这个选项并不常用,因为Elasticsearch作为一个后台服务运行,通常不需要伪TTY。对于服务容器,可以去掉-t选项,只保留-i如果确实需要持续的标准输入。
elasticsearch:8.4.1: 指定使用的镜像名称及标签,这里是版本8.4.1的Elasticsearch官方镜像。
在启动前我们需要登录阿里云服务器开放9200,9300端口;
首次启动,我们可以看到一下日志:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):-oc15dGPo8Qb=aCNqtS5-> HTTP CA certificate SHA-256 fingerprint:65dcf3b509f5f7a578a6dbf7f2c4dd011566b80832fd6193f5a6eb60c6f5d43a-> Configure Kibana to use this cluster:
* Run Kibana and click the configuration link in the terminal when Kibana starts.
* Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):eyJ2ZXIiOiI4LjQuMSIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiNjVkY2YzYjUwOWY1ZjdhNTc4YTZkYmY3ZjJjNGRkMDExNTY2YjgwODMyZmQ2MTkzZjVhNmViNjBjNmY1ZDQzYSIsImtleSI6IkUtTGJSSkFCdzJsQ19kRW80RWM2Oi1KQm8yQ2hfUnFtOUZlbW5rVVZKR3cifQ==-> Configure other nodes to join this cluster:
* Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):eyJ2ZXIiOiI4LjQuMSIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiNjVkY2YzYjUwOWY1ZjdhNTc4YTZkYmY3ZjJjNGRkMDExNTY2YjgwODMyZmQ2MTkzZjVhNmViNjBjNmY1ZDQzYSIsImtleSI6IkZlTGJSSkFCdzJsQ19kRW80RWQxOnhIak40b1lUUUo2WFFXWUFxZlZ0QXcifQ==If you're running in Docker, copy the enrollment token and run:`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.4.1`
在这里我们看到登录的用户名和密码:user= elastic password=-oc15dGPo8Qb=aCNqtS5;这个需要记好,还有日志中的token也一样,我们会在登录kibana中要用到,启动成功后,我们可以访问下elasticsearch的地址:服务器id:9200;输入日志中的用户名和密码
出现以上界面我们就把elasticsearch8.4.1安装好了。
上面我们已经把kibana镜像拉取下来了,下面我们来安装kibana,输入一下命令启动kibana,等待启动。
docker run --name kibana --net elastic -p 5601:5601 kibana:8.4.1
[root@iZf8zetnft7hz51hguyhg4Z ~]# docker run --name kibana --net elastic -p 5601:5601 kibana:8.4.1
[2024-06-23T11:40:34.194+00:00][INFO ][node] Kibana process configured with roles: [background_tasks, ui]
[2024-06-23T11:40:53.697+00:00][INFO ][http.server.Preboot] http server running at http://0.0.0.0:5601
[2024-06-23T11:40:53.736+00:00][INFO ][plugins-system.preboot] Setting up [1] plugins: [interactiveSetup]
[2024-06-23T11:40:53.738+00:00][INFO ][preboot] "interactiveSetup" plugin is holding setup: Validating Elasticsearch connection configuration…
[2024-06-23T11:40:53.772+00:00][INFO ][root] Holding setup until preboot stage is completed.i Kibana has not been configured.Go to http://0.0.0.0:5601/?code=722225 to get started.
从日志中我们可以看到kibana已经启动成功了,code需要记下,等会我们登录kibana也需要用的。下面我们来访问下:服务器地址:5601;当我们登录时会遇到下面界面:
这个token就是我们启动elasticsearch中的日志中的token,
输入之后,会看到以下界面,需要输入验证码,验证码就是我们启动kibana日志中的地址后缀code:
输入code码之后,就会出现以下界面了:
当加载完成,我们就来到了kibana登录界面了,
用户名和密码就是我们启动elasticsearch日志中的用户名和密码哦,输入用户名和密码就进入kibana界面了,如下所示:
修改密码我们可以使用命令行的形式也可以在kibana界面里修改,
命令行形式:
cd /usr/share/elasticsearch/
bin/elasticsearch-reset-password -u elastic -i
图形化界面形式:进行kibana主界面点开左边导航栏:找到stack Management
点击进入还是找左边导航栏,找到users模块,点击kibana,
点击进入找到change passwor进行修改就好了。
到此我们的kibana也启动好了,下面我们再来安装下ik分词器。
首先我们来安装下zip解压包,等会用它来解压ik分词器的压缩包;
sudo yum install zip unzip
进入进入到es的挂载目录 /var/lib/docker/volumes/esplugins/_data 使用 wget 命令,下载ik分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
解压以上压缩包
unzip -d ik elasticsearch-analysis-ik-8.4.1.zip
解压完成后,进入容器:
docker exec -it elasticsearch /bin/bash
退出容器,重新启动elasticsearch。
到此我们的elasticsearch8.4.1和kibana8.4.1就安装好了。
在本实战教程中,我们不仅解决了Docker镜像下载问题,通过配置镜像加速器顺利拉取了Elasticsearch与Kibana的最新镜像,还深入了解了如何自定义网络、优化容器启动参数,以及如何安全有效地启动这两个核心组件。进一步地,我们掌握了如何处理首次启动Elasticsearch时的安全配置信息,包括用户名密码和集群连接令牌,并成功应用这些信息于Kibana的配置与登录过程中。最后,我们还实践了IK分词器的安装步骤,确保了全文检索功能的完善。这一系列操作不仅加深了对Elasticsearch与Kibana部署流程的理解,也为构建高效搜索应用打下了坚实的基础。现在,你的搜索引擎平台已准备就绪,随时可以应对各类数据分析与日志管理挑战。继续探索,让数据为你讲述更多故事!
更多内容请关注以下公众号