注:启动虚拟机前可以先在设置-系统-内存中调节虚拟机的内存 要下载的es和kibana比较大
1.下载镜像
docker pull elasticsearch:7.4.2 #存储和检索数据
docker pull kibana:7.4.2 #可视化检索数据
2.设置目录挂载
mkdir -p /mydata/elasticsearch/config # 三条命令一句执行完后再执行下一句 前两句先创建容器中目录要挂在到外部的哪个文件
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml #将echo "http.host: 0.0.0.0"这条写入es配置文件 表示允许远程的任何机器访问es 之前安装mysql redis这些也需要设置运行所有远程机器访问 不然会拒绝访问
#注意 这里host: 和 0.0.0.0之间有个空格
3.启动es
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
注:
- 9200访问es api的端口号 9300es集群节点互相通信的端口号 -e设置参数
- single-node表示以单节点方式启动es
- "-Xms64m -Xmx512m"表示启动es时 设置初始内存64m 最大内存512m 不设置的话一启动es会将整个虚拟机占满
- -v就是目录挂载 -d以 elasticsearch:7.4.2镜像后台启动es
4.启动报错修改权限
使用上述docker run 命令启动成功后 通过浏览器 http://ip:9200访问失败 再 进入虚拟机查看docker ps发现es已经停掉了
使用下面 查看错误日志
docker logs elasticsearch
docker logs es的容器id或容器id的前几个数字 只要这几个数字只对应es一个容器就行
权限访问被拒绝 我们es容器里的数据 datanodes这些是挂载到外面 的 但由于权限问题访问被拒绝了
我们进入/mydata/elasticsearch 使用 ll 查看每个文件夹的权限
ll就是 ls -l 显示当前目录下文件的详细信息
使用如下命令更改权限:
chmod -R 777 /mydata/elasticsearch/ #修改文件夹权限 改成任何人所在的任何组都可读可写可执行 /mydata/elasticsearch/下的内容
linux drwxr-xr-x意思如下:
第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道。
后面的分三个三个来看,即 rwx 、r-x 、r-x。
第一个: root :r 是可读,w 是可写,x 是可执行,rwx 意思是可读可写可执行。
第二个: 一般用户(用户组):r-x 是可读可执行不可写。
第三个: 其他用户,r-x 是可读可执行不可写。
综合起来就是权限设置为:文件所有者(root)可读可写可执行,与文件所有者同属一个用户组的其他用户可读可执行,其它用户组可读可执行。
修改权限后重新启动容器
docker start 容器名/容器id/容器id的前几个数字
因为容器已经创建 不用使用docker run
docker run包含 docker create 和 docker start
可以使用 docker ps -a 查询所有包括没启动的容器
启动后过一会儿查看日志发现没有错误
在浏览器访问 http://ip:9200 访问后直接显示或让下载一个内容如下的文件 说明这次启动es成功
启动kibana kibana和es的版本一定要对应
docker run --name kibana
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200
-p 5601:5601 \
-d kibana:7.4.2
#http://192.168.56.10:9200 一定改为自己虚拟机的地址