使用Docker安装Elasticsearch和Kibana

一、简介


二、安装Elasticsearch

1、拉取镜像:

docker pull elasticsearch:7.4.2

2、在 /mydata/ 目录下创建elasticsearch/config和elasticsearch/data目录

root@jiguiquan:/# mkdir -p /mydata/elasticsearch/config
root@jiguiquan:/# mkdir -p /mydata/elasticsearch/data

3、在 /mydata/elasticsearch/config 下创建配置文件:

root@jiguiquan:/mydata/elasticsearch/config# cat elasticsearch.yml 
http.host:0.0.0.0

4、使用以下命令启动容器

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

43.jpg

5、此时使用docker ps 查看容器,我们会发现根本没有es 的容器,我们可以查看对应的es容器的日志:

root@jiguiquan:/mydata/elasticsearch/data# docker ps -a
root@jiguiquan:/mydata/elasticsearch/data# docker logs 98b494db00c9

会发现启动不了的原因是因为 es 容器没有权限往 /mydata/elasticsearch/ 目录下写数据:

因此,我们需要将 /mydata/elasticsearch/ 目录下的所有文件递归设置权限为 wxr

chmod -R 777 /mydata/elasticsearch/

6、之后再次启动 es 容器:docker start 98b494db00c9

这次 es 容器就可以顺利启动了!

root@jiguiquan:/# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
98b494db00c9        elasticsearch:7.4.2   "/usr/local/bin/dock…"   2 hours ago         Up 5 minutes        0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch
62415e1c830b        redis                 "docker-entrypoint.s…"   2 days ago          Up 2 days           0.0.0.0:6379->6379/tcp                           redis
ee8489cd9392        mysql:5.7.26          "docker-entrypoint.s…"   2 days ago          Up 2 days           0.0.0.0:3306->3306/tcp, 33060/tcp                mysql

7、启动成功后,我们使用http访问虚拟机的9200端口:

45.jpg

显然,Elasticsearch已经安装成功!


三、安装Kibana

1、拉取Kibana镜像

docker pull kibana:7.4.2

2、使用以下命令启动容器:

docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.174.141:9200 \
-p 5601:5601 \
-d kibana:7.4.2

3、访问虚拟机5601端口  http://192.168.174.141:5601/  

46.jpg

Kibana顺利安装并启用!

最后设置我们的Elasticsearch和Kibana为与Docker一起启动:

docker update elasticsearch --restart=always
docker update kibana --restart=always

四、为ElasticSearch安装ik分词器:

ik分词器的下载地址为:

https://github.com/medcl/elasticsearch-analysis-ik/releases

必须严格保证ik分词器的版本和我们安装的ElasticSearch版本一致(7.4.2)

1、进入es的docker容器内部:

root@jiguiquan:/mydata/elasticsearch/plugins# docker exec -it elasticsearch /bin/bash 
[root@98b494db00c9 elasticsearch]# ls
LICENSE.txt  NOTICE.txt  README.textile  bin  config  data  jdk  lib  logs  modules  plugins

但是我们其实在安装ES的时候就已经将 data、config、plugins三个目录映射到了宿主机上了,所以只需要到宿主机操作即可;

2、使用wget在宿主机的plugins目录下下载ik分词器:

root@jiguiquan:/mydata/elasticsearch/plugins# wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

25.jpg

3、使用unzip解压一下此zip压缩文件,解压到plugins/ik/目录下:

root@jiguiquan:/mydata/elasticsearch/plugins# chmod 777 ik/
root@jiguiquan:/mydata/elasticsearch/plugins# ll
total 4412
drwxrwxrwx 3 root root    4096 Jul  4 15:07 ./
drwxrwxrwx 5 root root    4096 Jul  4 15:07 ../
drwxrwxrwx 3 root root    4096 Jul  4 15:07 ik/

进入容器内部,使用elasticsearch-plugin list查看已经安装的插件列表:

[root@98b494db00c9 bin]# ls ../plugins/
ik                    ----注意这里要将之前下载的elasticsearch-analysis-ik-7.4.2.zip删除掉
[root@98b494db00c9 bin]# elasticsearch-plugin list
ik                    ----代表ik分词器插件就已经安装好了

4、重启elasticsearch容器

docker restart elasticsearch

这样ES中常用的ik分词器就安装好了!


五、重新安装ElasticSearch

有时候由于创建容器的时候配置不合理,比如JVM的堆内存设置太少,导致使用过程中经常出一些莫名其妙的问题,所以我们最快的方式就是将之前的容器删除后重新安装;

问:那么之前的ES的数据、配置、插件丢失怎么办?

答:不会的!因为我们之前已经将es容器中的data、config、plugins目录已经挂载到了宿主机上面,相当于持久化了;

    当我们创建新的es容器的时候,挂载到原来的文件上,所有的信息就都恢复了!

1、删除之前的ES容器

root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                            PORTS                               NAMES
f3ea8adb602e        kibana:7.4.2          "/usr/local/bin/dumb…"   3 weeks ago         Up 26 minutes                     0.0.0.0:5601->5601/tcp              kibana
98b494db00c9        elasticsearch:7.4.2   "/usr/local/bin/dock…"   3 weeks ago         Exited (143) About a minute ago                                       elasticsearch
62415e1c830b        redis                 "docker-entrypoint.s…"   4 weeks ago         Up 6 days                         0.0.0.0:6379->6379/tcp              redis
ee8489cd9392        mysql:5.7.26          "docker-entrypoint.s…"   4 weeks ago         Up 6 days                         0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker rm elasticsearch
elasticsearch
root@jiguiquan:/mydata/elasticsearch/plugins/ik/config# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
f3ea8adb602e        kibana:7.4.2        "/usr/local/bin/dumb…"   3 weeks ago         Up 27 minutes       0.0.0.0:5601->5601/tcp              kibana
62415e1c830b        redis               "docker-entrypoint.s…"   4 weeks ago         Up 6 days           0.0.0.0:6379->6379/tcp              redis
ee8489cd9392        mysql:5.7.26        "docker-entrypoint.s…"   4 weeks ago         Up 6 days           0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

2、调整上次的ES镜像的启动命令,将堆内存调大:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms128m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐