Docker 安装Elasticsearch教程(保姆级)
首先,es可能需要的内存数量比较大,所以再docker中安装之气之前需要先设置一下VMA的数量
cat /proc/sys/vm/max_map_count
sysctl -w vm.max_map_count=262144
关于 max_map_count 的解释如下:
1.文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。
2.虚拟内存区域是一个连续的虚拟地址空间区域。
3.在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。
4.调优这个值将限制进程可拥有VMA的数量。
5.限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。
3.下载镜像运行
#拉取镜像
docker pull elasticsearch:7.7.0
#启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
其中的一下参数讲解
--name表示镜像启动后的容器名称
-d: 后台运行容器,并返回容器ID;
-e: 指定容器内的环境变量
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
4,访问ES
地址输入你得ip:9200 ,然后出现一下内容表示安装成功
{
"name" : "1c404e407e83",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "tfSAyLgasdaSDqcb1Zdkg",
"version" : {
"number" : "7.7.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "81a1e9eda8e6183fASDSA86246f6dced26a10eaf",
"build_date" : "2020-05-12T02:01:37.602180Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
5.安装elasticsearch-head
head插件是ES的一个可视化管理插件,用来监视ES的状态,并通过head客户端和ES服务进行交互,比如创建映射、创建索引等。从ES6.0开始,head插件支持使得node.js运行。
(这个可以选择安装在docker中 也可以选择 下载安装包 然后再win本地解压 然后先写一下win中的使用吧,个人感觉在windos中会方便一点)
window
1、安装
下载head:
下载地址:https://github.com/mobz/elasticsearch-head
2、运行
#用黑窗口打开:
npm run start
3、测试
浏览器访问:http://127.0.0.1:9100
docker (Linux)
#拉取镜像
docker pull mobz/elasticsearch-head:5
#创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
#启动容器
docker start elasticsearch-head
or
docker start 容器id (docker ps -a 查看容器id )
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CPG9ycuN-1685001694769)(C:\Users\Echo\AppData\Roaming\Typora\typora-user-images\1685000277691.png)]
然后打开后可能存在连接不上的情况,因为这个时前后端分离项目,需要进行跨域处理**
6.修改docker中elasticsearch的elasticsearch.yml文件
docker exec -it elasticsearch /bin/bash (进不去使用容器id进入)
vi config/elasticsearch.yml
在最后加入下面两行
http.cors.enabled: true
http.cors.allow-origin: "*"
退出重启
exit
docker restart 容器id
7.ElasticSearch-head 操作时不修改配置,默认会报 406错误码
#复制vendor.js到外部
docker cp 容器id:/usr/src/app/_site/vendor.js /usr/local/
#修改vendor.js
vim vendor.js
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vQ6Iy4v-1685001694770)(C:\Users\Echo\AppData\Roaming\Typora\typora-user-images\1685001046570.png)]
然后如果找不到行号
set nu //展示行号
:行号 回车 //跳转指定行号
修改完成在复制回容器
docker cp /usr/local/vendor.js 容器id:/usr/src/app/_site
重启elasticsearch-head
docker restart 容器id
随后连接就可以正常看到了