docker安装elasticsearch6.8.3-单机模式
拉取镜像
docker pull elasticsearch:6.8.3
创建容器 测试环境加上-e "discovery.type=single-node"
docker run --name elasticsearch
--net host -e "discovery.type=single-node"
elasticsearch:6.8.3
指定目录
docker run -d --name elasticsearch
-p 9200:9200 -p 9300:9300
-e "discovery.type=single-node"
-v /data/elasticsearch/config :/usr/share/elasticsearch/config
-v /data/elasticsearch/data:/usr/share/elasticsearch/data
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins
--restart=always elasticsearch
直接启动会报错,没有权限
先启动,再把文件cp出来,在用上面命令重新启动
docker run -d --name elasticsearch
-p 9200:9200 -p 9300:9300
-e "discovery.type=single-node"
--restart=always elasticsearch:6.8.3
文件cp出来
docker cp 5d14245e3c24:/usr/share/elasticsearch/config /home/elasticsearch
&& docker cp 5d14245e3c24:/usr/share/elasticsearch/data /home/elasticsearch
&& docker cp 5d14245e3c24:/usr/share/elasticsearch/plugins /home/elasticsearch
赋予文件权限
chown -R elasticsearch /home/elasticsearch/
用上面命令重新启动
docker run -d --name elasticsearch
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
elasticsearch:6.8.3
提示 : 6.8.3不支持type,建议安装7.1.1
docker pull elasticsearch:7.1.1
docker run -d --name elasticsearch --net=host
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
--restart=always elasticsearch:7.1.1
docker cp 容器id:/usr/share/elasticsearch/config /home/elasticsearch
&& docker cp 容器id:/usr/share/elasticsearch/data /home/elasticsearch
&& docker cp 容器id:/usr/share/elasticsearch/plugins /home/elasticsearch
赋予文件权限
chown -R elasticsearch /home/elasticsearch/
移除容器重新指定文件启动
docker run -d --name elasticsearch --net=host
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
-v /home/elasticsearch/config:/usr/share/elasticsearch/config
-v /home/elasticsearch/data:/usr/share/elasticsearch/data
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins
--restart=always elasticsearch:7.1.1
docker的--net=host有什么用
加了--net=host以后就不需要再做端口映射了.比如docker容器内在8080端口起了一个web server.不加的话需要把本机的某个port比如7979和docker内的8080做一个映射关系,访问的时候访问7979. 加了net=host则直接访问8080.
另外,加了net=host后会使得创建的容器进入命令行好名称显示为主机的名称而不是一串id.
比如显示root@sc:/#而不是root@3b8e647e5f79:/#
运行容器
docker start elasticsearch
查看日志
docker logs elasticsearch
如果因为内存不足无法启动,则修改启动的内存大小
重新启动ES
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.8.3
测试
IP:9200
其他设置
进入容器
docker exec -it elasticsearch /bin/bash
新增跨域配置
修改配置文件/usr/share/elasticsearch/config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
安装分词插件 (elasticsearch-plugin在容器进去后的bin目录下面)
docker exec -it 容器id bash
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.3/elasticsearch-analysis-ik-6.8.3.zip
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.1/elasticsearch-analysis-ik-7.7.1.zip
如果安装错误,则去下载(找到自己elasticsearch的版本,下载对应的ik版本)
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.1.1
解压移动到服务器,或移到服务器解压都行(uzip)
重启容器用post测试
访问地址 http://192.168.0.23:9200/_analyze?pretty=true POST
参数
{
"analyzer":"ik_max_word",
"text":"你是瓜皮吗"
}
如下则代表成功
安装文本抽取插件
./elasticsearch-plugin install ingest-attachment
重启容器
docker restart elasticsearch
更新镜像
docker commit -m="[备注]" [容器ID] elasticsearch:6.8.3
Kibana
上面我们安装了elasticsearch,可以使用curl命令进行操作,我们还是需要一个图像界面进行管理,下面我们安装Kibana,这里注意安装的时候一定要版本对应,这里安装Kibana6.8.3
docker pull kibana:6.8.3
运行kibana
docker run --name kibana6.8.3 -e ELASTICSEARCH_URL=http://172.17.0.2:9200
-p 5601:5601 -d [镜像ID]
PS:
参数ELASTICSEARCH_URL一定要是docker里面的内部地址,否则Kibana访问不到Elasticsearch。
进入容器查看内部地址
或者 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器id或name
启动成功访问 ip+5601
汉化版
启动时-e 传递环境变量
docker run --name kibana6.8.3
-e "I18N_LOCALE=zh-CN"
-e ELASTICSEARCH_URL=http://172.17.0.4:9200
-p 5601:5601
-d 54db200915ee
也可以创建配置文件,启动的时候指定配置文件
vi /home/kibana/kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
#指定elasticsearch的访问ip
elasticsearch.hosts: [ "http://192.168.0.23:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: false
docker run -d --name kibana --restart=always -p 5601:5601 -v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:6.8.3