docker搜索下载ElasticSearch镜像
-
1.执行docker命令
输入:docker search elasticSearch,结果如下
-
2.docker官方仓库 搜索elasticsearch如下
点击ElasticSearch进入
学习使用直接用最新的,边学习边探索,挑战自我,正式环境不建议直接使用最新的版本 -
拉取镜像 docker pull elasticsearch:7.8.1 查看本地镜像 docker images
docker安装es
- 安装命令
docker run -d --name elasticSearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" a529963ec236
-p 设置端口
-e ES_JAVA_OPTS配置JVM参数 Xmx 最大堆大小和 -Xms 最小堆大小,防止启动占用内存过大默认2g,我分配的虚拟机最大内存才2g
-e "discovery.type=single-node"使用单个节点,避开引导检查
5601端口不用开放的图中操作错误,后续检查文档发现的。。。。
- 设置防火墙
防火墙开放端口 5601后续配置kibana使用
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload 重启防护墙
我是虚拟机所以直接关闭防护墙了
关闭防火墙命令:systemctl stop firewalld.service
关闭开机自启动:systemctl disable firewalld.service
-
创建简单索引测试一下
-
查询索引
ok没毛病,可以使用了
-
但是,但是,但是如果不小心把docker es容器删除掉会导致数据丢失,尝试下
重启操作如下没毛病,索引还在
容器删除,再次启动
酸爽。解决方案 需要将数据文件和配置文件挂在到宿主机上,保证数据安全
docker挂载方式启动部署es
准备工作
- 进入home目录 cd /home
- 创建多个文件夹 mkdir -p es/config
- 进入es目录 cd es
- 创建数据目录 mkdir data
- 创建插件目录 mkdir plugins
- 在config下创建es.yml配置文件 cd es
vi config/es.yml 将下面内容粘贴修改ip地址受权 设置任何人都有读、写、运行三项权限,也可以单独给100用户设置,100是docker启动es的帐号
chmod 777 /home/es/data
chmod 777 /home/es/plugins
chmod 777 /home/es/config/es.yml
es.yml
# 集群名称
cluster.name: elasticsearch-cluster
# 节点名称
node.name: es-node1
# 绑定host,0.0.0.0代表当前节点的ip
network.host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
network.publish_host: 192.168.22.130
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"
# 表示这个节点是否可以充当主节点
node.master: true
# 是否充当数据节点
node.data: true
# 所有主从节点ip:port
discovery.seed_hosts: ["192.168.22.130:9300"]
# 这个参数决定了在选主过程中需要 有多少个节点通信 预防脑裂
discovery.zen.minimum_master_nodes: 1
docker 命令启动走你
docker run -d --name es7.8.1 -p 9200:9200 -p 9300:9300 -v /home/es/data:/usr/share/elasticsearch/data -v /home/es/plugins:/usr/share/elasticsearch/plugins -v /home/es/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" a529963ec236
设置es容器docker启动时自动启动
docker container update --restart=always es7.8.1
查看docker日志 ,启动成功了
配置X-Pack设置es用户密码
- 为什么要配置X-Pack,外网裸奔这么刺激容易被攻击,亲身经历过测试环境百G数据被攻击的痛感,索引全部变为空白索引,希望大家以此为戒
~嗯,真香!
正式环境建议内网访问、内网访问、内网访问
-
打开 es.yml文件
docker exec -it es7.8.1 /bin/bash
vi config/elasticsearch.yml
在最后增加如下参数
# 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt http.cors.allow-headers: Authorization # 这条配置表示开启xpack认证机制 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
- 退出容器,重启es
exit
docker restart es7.8.1
docker logs es7.8.1 查看日志启动成功后进入容器中
docker exec -it es7.8.1 /bin/bash
cd bin/
./elasticsearch-setup-passwords interactive
设置elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user等密码,密码需要记住要不然还得找回
我虚拟机直接123456
,正式环境不要这么简单,否则那滋味值得你回味~嗯,真香!
possman与浏览器测试完美
- 不要删除此类索引.security-7 eq-8u82gQr-osTg1kRkr5g这是存储密码的
当然你也可以尝试下,经历过的才值得回味~嗯,真香!
docker安装kibana
-
docker官方仓库 搜索kibana选择与es对应的版本,执行docker命令
下载好慢~难受
创建kibana目录
mkdir -p /home/kibana/config
受权
chmod 777 /home/kibana/config
创建配置文件
vi /home/kibana/config/kibana.yml
kibana.yml
server.name: kibana # kibana的主机地址 0.0.0.0可表示监听所有IP server.host: "0.0.0.0" # kibana访问es的URL elasticsearch.hosts: [ "http://192.168.22.130:9200" ] elasticsearch.username: 'kibana' elasticsearch.password: '123456' # 显示登陆页面 xpack.monitoring.ui.container.elasticsearch.enabled: true # 语言 i18n.locale: "zh-CN"
-
执行docker命令部署kibana
docker run -d -it --restart=always --privileged=true --name=kibana -p 5601:5601 -v/home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml 22bc1dd9a48a
设置es容器docker启动时自动启动
--restart=always
设置特权
--privileged=true测试 http://192.168.22.130:5601
输入es帐号密码 登陆 开始你的表演~得劲
进入控制台查看下索引,这些是初始索引,密码等信息,不要删除,当然也可以删除寻找刺激~嗯,真香
创建一个索引PUT search_demo_v1 { "aliases": { "search_test": {} }, "mappings": { "properties": { "content": { "type": "text" }, "createTime": { "type": "date" }, "id": { "type": "integer" } } }, "settings": { "index": { "number_of_shards": "1", "number_of_replicas": "1" } } }
如有错误的操作或者期待的内容,欢迎提出宝贵意见,一定吸取建议,感谢您查看
下一篇课程《二、ElasticSearch+Kibana配置文件详解》敬请期待