Docker部署Elastoicsearch

251 阅读3分钟

1. 创建网络

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联,这里先创建一个网络,让es和kibana处于一个网络,这样kibana才可以访问到es。 创建一个名为es-net的网络:

docker network create es-net

2.拉取镜像

docker pull elasticsearch:7.12.1

docker pull kibana:7.12.1

image.png

3、创建目录

mkdir -p /opt/es7.12.1/{data,plugins,logs}

4、修改目录的权限为可读写

chmod +777 /opt/es7.12.1/{data,plugins,logs}

5、启动es镜像

docker run -d \
  --name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v /opt/es7.12.1/data:/usr/share/elasticsearch/data \
    -v /opt/es7.12.1/plugins:/usr/share/elasticsearch/plugins \
    -v /opt/es7.12.1/logs:/usr/share/elasticsearch/logs \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1
命令解释:

-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":分配内存大小
-e "discovery.type=single-node":单节点模式
-v /opt/es7.12.1/data:/usr/share/elasticsearch/data:将宿主机的目录挂载到容器的数据目录
-v /opt/es7.12.1/plugins:/usr/share/elasticsearch/plugins:将宿主机的目录挂载到容器的插件目录
-v /opt/es7.12.1/logs:/usr/share/elasticsearch/logs:将宿主机的目录挂载到容器的日志目录
--network es-net :加入一个名为es-net的网络中
-p 9200:9200:端口映射配置

6、开放es和kibana防火墙端口

# 开放9200端口用于http通信

firewall-cmd --zone=public --add-port=9200/tcp --permanent

# 开放9300端口用于ES集群间通信

firewall-cmd --zone=public --add-port=9300/tcp --permanent


# 开放5601端口用于kibana

firewall-cmd --zone=public --add-port=5601/tcp --permanent

# 重新加载防火墙使开放的端口即时生效

firewall-cmd --reload

# 查看开放的公共端口列表

firewall-cmd --zone=public --list-ports 

7、配置云服务器安全组

放开TCP的9300、9200、5601端口

8、验证es安装结果

在浏览器地址栏中输入URL:http://<你的云服务器公网IP地址>:9200/

返回如下结果表示Docker安装和运行ElasticSearch服务成功

image.png

9、部署kibana

docker run -d \
	--name kibana \
	-e ELASTICSEARCH_HOSTS=http://es:9200 \
	--network=es-net \
	-p 5601:5601 \
kibana:7.12.1
--network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置,
命令解释:
--network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置

访问 也可以通过浏览器访问:http://<你的云服务器公网IP地址>:5601/app/home#/

image.png

10、 Kibana中文配置

我们发现Kibana是英文面板,看起来不是很方便,但Kibana是支持中文配置,所以我们可以把Kibana配置成中文版,便于我们操作。

切换中文操作如下:

properties
复制代码
#进入容器
docker exec -it kibana /bin/bash

#进入配置文件目录
cd /usr/share/kibana/config

#编辑文件kibana.yml
vi kibana.yml

#在最后一行添加如下配置
i18n.locale: zh-CN

#保存退出
exit

#并重启容器
docker restart kibana

11、安装ik中文分词器

在宿主机的plugins目录下创建ik目录

image.png

进入ik目录,下载分词器

wget https://gh.api.99988866.xyz/https://github.com/infinilabs/analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

解压elasticsearch-analysis-ik-7.12.1.zip,然后删除elasticsearch-analysis-ik-7.12.1.zip就好了。

验证是否安装成功

进入es容器内部

docker exec -it es /bin/bash

然后进入到bin目录下,执行查询插件命令

elasticsearch-plugin list

如下看到结果输出:ik

image.png