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.0.166
# 设置对外服务的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.0.166"]
cluster.initial_master_nodes: ["es-node1"]
# 这个参数决定了在选主过程中需要 有多少个节点通信  预防脑裂
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
    
    最终如下
    # 集群名称
    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.0.166
    # 设置对外服务的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.0.166"]
    cluster.initial_master_nodes: ["es-node1"]
    # 这个参数决定了在选主过程中需要 有多少个节点通信  预防脑裂
    discovery.zen.minimum_master_nodes: 1
    # 跨域允许设置的头信息,默认为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
    自动生成密码命令:./elasticsearch-setup-passwords auto
    在这里插入图片描述在这里插入图片描述
    本地启动es,密码记录防止忘记密码,哈哈,提醒大家下正式环境密码一定不要暴露哦
    Changed password for user apm_system
    PASSWORD apm_system = 9qtPkI6Wc5vvY8MJ6E2e
    
    Changed password for user kibana_system
    PASSWORD kibana_system = MQ7cItrVYtFjVNjTnnb6
    
    Changed password for user kibana
    PASSWORD kibana = MQ7cItrVYtFjVNjTnnb6
    
    Changed password for user logstash_system
    PASSWORD logstash_system = TbiArAJwJJf5o4XVhtVg
    
    Changed password for user beats_system
    PASSWORD beats_system = 2bBFz7zhJ5paSPMzGYzz
    
    Changed password for user remote_monitoring_user
    PASSWORD remote_monitoring_user = BonNnrkYXvtAFgIggU0q
    
    Changed password for user elastic
    PASSWORD elastic = KeUf0N2AMlldK6ELLmGH
    

设置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概念 RESTAPI、文档、索引、集群、节点、分片(二)》

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐