Search K
Appearance
Appearance
elasticsearch
以下简称es
docker pull elasticsearch:7.4.2 #存储和检索数据
docker pull kibana:7.4.2 #可视化检索数据
ElasticSearch
容器创建容器前我们先挂载es
的配置文件以及数据目录,挂载后我们只需要修改宿主主机中的配置文件或者数据就可以同步修改容器中的es
,同时我们修改es
的配置文件,添加http.host: 0.0.0.0
代表了我们的es
可以被远程的任何主机访问。
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml # 代表es可以被远程的任何机器访问
chmod -R 777 /mydata/elasticsearch/ #保证权限
接下来是创建es
容器的脚本,同样像之前一样统一放在/usr/local/docker
目录下,方便以后管理es
容器。
/usr/local/docker/elasticsearch/start.sh
#!/bin/bash
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -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
/usr/local/docker/elasticsearch/remove.sh
#!/bin/bash
CONTAINER_NAME="elasticsearch"
CONTAINER_ID=$(docker ps -aqf "name=^$CONTAINER_NAME\$") # 获取指定容器的ID
if [ ! -z "$CONTAINER_ID" ]; then
docker stop $CONTAINER_ID && docker rm $CONTAINER_ID # 先停止再移除容器
fi
命令解释:
-p
表示暴露端口:
9200
端口用于Http
的RESTful API
请求端口,即外部通信时用的端口
9300
端口用于es
在分布式集群状态下节点间的通信端口
-e
表示指定参数:
discovery.type=single-node
表示指定es
以单节点方式运行
ES_JAVA_OPTS="-Xms64m -Xmx512m"
非常重要,如果不指定,es
已启动会将内存全部占用,我们的服务器直接卡死,这里设置初始64m
,最大512m
,在我们的学习以及测试期间已经够用,在平时公司项目中,一般都是32G
的,我们就可以给es
尽可能可能多的内存
-v
表示挂载目录:
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
,例如这里,以后我们修改宿主机的elasticsearch.yml
配置文件就相当于修改容器中的elasticsearch,yml
,避免进入容器中去操作。
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
,后面我们会给es
装一些插件,挂载目录后我们就不需要进入容器中装插件了,直接在宿主机安装插件即可。
-d
表示指定镜像版本:
-d elasticsearch:7.4.2
,指定7.4.2
镜像版本
然后执行sh start.sh
创建容器,可以看到容器成功创建
由于我使用的是腾讯云服务器,需要登录腾讯云开一下云服务器的端口,以及本机的防火墙端口
firewall-cmd --list-ports #查看防火墙开放的所有端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload #重启一下防火墙,不然不会生效
这时候我们访问主机的9200
端口就可以获取到es
的信息,这个信息代表了我们当前节点的信息,能访问到如下信息说明我们的es
已经安装成功。
WARNING
注意ELASTICSEARCH_HOSTS
后的地址是我们宿主机的ip地址。
/usr/local/docker/kibana/start.sh
#!/bin/bash
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://101.43.17.174:9200 -p 5601:5601 \
-d kibana:7.4.2
腾讯云服务器防火墙和本机防火墙端口记得开放5601
端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
执行sh start.sh
可以在ip:5601
端口访问到kibana
的服务,当出现如下界面时说明我们的kibana
已经安装成功。