如何在docker下安装elasticsearch

一 环境

VMware® Workstation 15 Pro

centos7 (1810)

docker19.03.1

二 进入centos7启动dcoker

  1. systemctl start docker

三 打开docker官方仓库,搜索elasticsearch以查看需要下载的版本,拉取镜像的时候,官方推荐要指定版本号,目前最新7.3.0

https://hub.docker.com

搜索elasticsearch后,点击tags查看版本更新列表,目前我下载7.3.0的,格式 :镜像名称:tag

二 拉取elasticsearch镜像,目前官方最新版本7.3.0

由于墙的原因,下载比较慢,需要修改docker的镜像为阿里云的镜像仓库,详情请搜索

拉取镜像的时候,官方推荐要指定版本号,如果没有指定,默认是: 镜像名:latest 下载最新版本,这是不推荐的方式,要避免这样使用

以下开始从阿里云拉取镜像

  1. docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0

三 使用镜像创建容器,启动elasticsearch服务

分两种方式,开发者模式和生产模式,开发者不需要配置太多,直接一行命令搞定,生产模式需要更多的配置

1.开发者模式

1.1创建网络

如果需要安装kibana等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana通信

  1. docker network create esnet

Linux安装Elasticsearch - 图1

1.2 创建并启动elasticsearch容器

1.2.1查看镜像

  1. docker images

Linux安装Elasticsearch - 图2

1.2.2创建运行

  1. docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.type=single-node" bdaab402b220
  1. 后台启动:
  2. docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.8.0

Linux安装Elasticsearch - 图3

—name 名称 给容器起个名字

-p 外部访问端口:容器端口 9200是供htpp访问端口,9300是供tcp访问的端口,如果不做端口映射,浏览器就不能访问elasticsearch的服务

—network 网络名 用于多个服务通信与隔离,例如用kibana连接elasticsearch就需要他们在同一个网络下

bdaab402b220 通过docker images命令查看到需要创建的容器id,此处用镜像名也可以


tips:run怎么使用?那么长怎么记,大概记一下,万能命令是

  1. docker run --help

1.2.3 查看正在运行的容器,以确认elasticsearch容器是否创建成功

  1. docker ps

可以看到status状态是up,说明已经在docker中成功运行了elasticseach

打开浏览器访问http://192.168.61.128:9200/ 可以看到如下结果

ip地址换成linux主机的ip

Docker 安装 Kibana

使用和 elasticsearch 相同版本镜像 7.4.1 (不一样可能会出现问题)

1、下载Kibana镜像

  1. # 下载Kibana镜像
  2. docker pull kibana:7.4.1
  3. # 查看镜像
  4. docker images

2、编辑kibana.yml配置文件
kibana.yml配置文件放在宿主机/data/elk/目录下,内容如下:

  1. # Default Kibana configuration for docker target
  2. server.name: kibana
  3. server.host: "0"
  4. elasticsearch.hosts: [ "http://192.168.12.183:9200" ]
  5. xpack.monitoring.ui.container.elasticsearch.enabled: true

注意:elasticsearch.hosts为Elasticsearch实例

3、运行 Kibana

  1. docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name xinyar-kibana -p 5601:5601 -v /data/elk/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.4.1
  2. # 查看容器启动状态
  3. docker ps

4、启动kibana
访问 http://127.0.0.1:5601 (启动可能会较慢,如失败等几秒再尝试刷新一下)

Docker下安装ElasticSearch和Kibana

dockerelasticsearchkibana

发布于 2019-08-21

Linux安装Elasticsearch - 图4

1.前言

现在elasticsearch是比较火的,很多公司都在用,所以如果说还不知道es可能就会被人鄙视了。所以这里我就下决心来学习es,我比较钟爱于docker所有也就使用了docker来安装es,这里会详细介绍下安装的细节以及需要注意的地方。关于docker的安装在这里我就不去说明了,可以自行安装一下就可以了,很简单的,我保证你真的可能会爱上它。这里我使用的电脑是MacBook Pro 如果是linux的话其实基本相同,如果是Windows的话,可能就不太一样了,这里我也没有实际操作过,感兴趣的也可以自己去尝试一下。

2.ElasticSearch安装

2.1 docker安装es

要使用es肯定是需要安装的,由于用惯了docker,所以也想在docker上尝试一下,主要是因为我的好多软件都以及选择了docker。docker安装其实是很简单的,至于要一行命令即可。这里我选择的是es的7.2.0版本镜像镜像安装,具体安装命令如下:

  1. docker pull elasticsearch:7.2.0

敲完命令以后回车,只需要等带镜像下载完成就可以了。

2.2 启动es

安装完成以后当然需要去启动我们的es了,这里启动也是很方便的只需要一行命令即可。如下:

  1. docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.2.0

这样es就启动好了。我们可以去检查es是否安装完成,可以输入命令:

  1. curl http://localhost:9200

或者在浏览器中打开http://localhost:9200这个网址,如果能看到以下信息则说明我们的es是已经安装好了的。

  1. {
  2. "name" : "530dd7820315",
  3. "cluster_name" : "docker-cluster",
  4. "cluster_uuid" : "7O0fjpBJTkmn_axwmZX0RQ",
  5. "version" : {
  6. "number" : "7.2.0",
  7. "build_flavor" : "default",
  8. "build_type" : "docker",
  9. "build_hash" : "508c38a",
  10. "build_date" : "2019-06-20T15:54:18.811730Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.0.0",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

如果你是在服务器上安装,想要对外访问还必须打开你服务器的9200端口,然后将localhost换成你服务器的ip地址即可。

2.3 修改配置,解决跨域访问问题

首先进入到容器中,然后进入到指定目录修改elasticsearch.yml文件。

  1. docker exec -it elasticsearch /bin/bash
  2. cd /usr/share/elasticsearch/config/
  3. vi elasticsearch.yml

在elasticsearch.yml的文件末尾加上:

  1. http.cors.enabled: true
  2. http.cors.allow-origin: "*"

修改配置后重启容器即可。

  1. docker restart elasticsearch

2.4 安装ik分词器

es自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下:
注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。点击这里

  1. cd /usr/share/elasticsearch/plugins/
  2. elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
  3. exit
  4. docker restart elasticsearch

然后可以在kibana界面的dev tools中验证是否安装成功;

  1. POST test/_analyze
  2. {
  3. "analyzer": "ik_max_word",
  4. "text": "你好我是东邪Jiafly"
  5. }

不添加"analyzer": "ik_max_word",则是每个字分词,可以在下面kibana安装完成以后尝试一下。

3.kibana安装

3.1 docker安装kibana

同样适用docker安装kibana命令如下:

  1. docker pull kibana:7.2.0

等待所有镜像下载完成即可。

3.2 启动kibana

安装完成以后需要启动kibana容器,使用--link连接到elasticsearch容器,命令如下:

  1. docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.8.0
  2. docker start kibana

启动以后可以打开浏览器输入http://localhost:5601就可以打开kibana的界面了。