【Docker】9. Docker安装Elasticsearch

1,955 阅读3分钟

安装ES

  1. 在Docker Hub上搜索MySQL镜像

    20210909193538.png

  2. 在Tags中查找对应版本,复制命令并执行

    20210909193814.png

    docker pull elasticsearch:6.8.0
    
  3. 给ES和Kibana单独创建一个网桥

    因为ES和Kibana建议以一个独立的服务存在。

    docker network create 网桥名称
    
  4. 启动基本服务实例

    ES有两个端口:

    • 9200:Web端口,与RESTful客户端通信。
    • 9300:为TCP端口,与Java做通信。
    docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -e "discovery.type=single-node" elasticsearch:6.8.0
    

    上面命令中 -e 配置表示ES以单节点模式启动,虽然名为单节点,但是还是以集群模式启动。

    所以我们默认集群启动,也没有问题

    docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 elasticsearch:6.8.0
    

    在第一次启动ES时,可能会报CentOS虚拟内存不够,需要做如下配置

    20210909195646.png

    1. 宿主机中修改配置

      vim /etc/sysctl.conf
      
    2. 修改如下配置

      vm.max_map_count=262144
      

      CentOS 7中默认大小为65530。

    3. 启用配置

      sysctl -p
      
  5. 使用数据卷将ES的数据和配置持久化到宿主机

    进入容器查看可知,ES在Docker中的所有数据都存储在容器中的 /usr/share/elasticsearch/data 中;ES在Docker中的所有配置都存储在容器中的 /usr/share/elasticsearch/config

    docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -v 数据卷名称1:/usr/share/elasticsearch/data -v 数据卷名称2:/usr/share/elasticsearch/config elasticsearch:6.8.0
    
  6. 使用数据卷将ES的插件持久化到宿主机

    进入容器查看可知,ES在Docker中的所有插件都存储在容器中的 /usr/share/elasticsearch/plugins 中。

    docker run -d --name 容器名 --net 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -v 数据卷名称1:/usr/share/elasticsearch/data -v 数据卷名称2:/usr/share/elasticsearch/config -v 数据卷名称3:/usr/share/elasticsearch/plugins elasticsearch:6.8.0
    
  7. 将对应ES版本的IK分词器 elasticsearch-analysis-ik-6.8.0.zip 上传到上面命令中的设置的 /var/lib/docker/volumes/数据卷名称3/_data 中。

  8. 创建一个目录ik,存放解压后的 elasticsearch-analysis-ik-6.8.0.zip

    mkdir ik
    mv elasticsearch-analysis-ik-6.8.0.zip ik/
    cd ik/
    
  9. 解压 elasticsearch-analysis-ik-6.8.0.zip

    unzip elasticsearch-analysis-ik-6.8.0.zip
    
  10. 删除 elasticsearch-analysis-ik-6.8.0.zip

    rm -rf elasticsearch-analysis-ik-6.8.0.zip
    
  11. 重启当前容器,自动载入IK分词器

    docker restart 容器名
    

安装Kibana

  1. 在Docker Hub上搜索Kibana镜像

    20210909203036.png

  2. 在Tags中查找对应版本,复制命令并执行

    20210909203129.png

    docker pull kibana:6.8.0
    

    Kibana和ES的版本必须保持严格一致。

  3. 启动基本服务实例

    docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 kibana:6.8.0
    

    网桥名和ES的网桥名一致。

  4. Kibana连接ES

    docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 -e ELASTICSEARCH_URL=http://宿主机IP:宿主机端口1 kibana:6.8.0
    

    宿主机端口1与 "安装ES" 中第5点中相对应。

  5. 优化

    如果每次都写 -e ELASTICSEARCH_URL=http://宿主机IP:宿主机端口1 未免太过于冗余,可以将这些内容写入Kibana配置文件,让Kibana在加载时去配置文件中读取信息,这样就更加方便了。

    进入容器查看可知,Kibana在Docker中的所有配置都存储在容器中的 /usr/share/kibana/config 中。

    1. 使用数据卷将Kibana的配置持久化到宿主机

      docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 -v 数据卷名称:/usr/share/kibana/config kibana:6.8.0
      
    2. /var/lib/docker/volumes/数据卷名称/_data 中修改 kibana.yml 配置文件。

      elasticsearch.hosts: [ "http://宿主机IP:宿主机端口1" ]
      

      宿主机端口1与 "安装ES" 中第5点中相对应。

      kibana.yml 中默认为 elasticsearch.hosts: [ "http://elasticsearch:9200" ]

    3. 重启Kibana

      docker restart 容器名
      

      容器名与上面第1点对应。