• Docker 安装 ElasticSearch 及失败解决方法[Ubuntu 20.04]


    1. 下载 ElasticSearch

    最开始使用docker search命令搜索后,就直接使用docker pull命令拉取镜像,但没想到拉取失败,后来到官网看了看,原来没有标签为lasted的镜像,所以,正确的拉取方法应该是: docker pull elasticsearch:tag

    拉取ElasticSearch

    2. 运行 ElasticSearch

    2.1 失败的启动

    事先说明一下,ElasticSearch启动时默认使用2GB的内存,为了防止内存占用过大,一般都限制了它的运行内存,如下命令设置为256MB。

    然后我很自信满满的运行了下面的命令,其中-d表示后台运行,-p 9200:9200是进行端口映射,--name ES01是指定容器的名称,7.14.0是版本号。9200端口用于Web通信,9300用于分布式下各节点间的通信。

    docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
    --name ES01 elasticsearch:7.14.0
    

    错误的运行

    然后使用docker ps -a查询了一下运行情况,确实在运行,但是使用浏览器访问http://localhost:9200却一直失败,重新查询运行情况,居然退出了。

    容器退出了

    2.2 查找解决方法

    之后使用docker logs 容器ID或容器名称查询容器启动的日志,一行行查找,终于找到了错误原因:

    错误原因

    • 第一个是vm.max_map_count的值太低,需要重新设置。
    • 第二个是配置中至少需要设置 [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]中的一个。

    2.2.1 设置vm.max_map_count

    设置方法: sysctl -w vm.max_map_count=262144

    修改属性值

    2.2.2 配置文件

    说实话,Docker是最近才学的,至于容器的配置文件放在哪个位置还真不清楚,然后在网上查询也没找到结果,但是网上的教程提供了路径,就是: /usr/share/elasticsearch/config/elasticsearch.yml,但实际上还是找不到,后来想了想,可能需要进入容器的运行环境中才行。

    于是启动容器,但是不到一分钟,容器就因为Bug没解决,无法一直运行,于是我先把命令先敲一遍,然后进入容器后直接粘贴,看看这配置文件写了啥。

    • 先启动容器。
      • docker start ES01
      • ES01是容器的名称。
    • 进入容器
      • docker exec -it ES01 /bin/bash
    • 查看配置文件信息
      • cat /usr/share/elasticsearch/config/elasticsearch.yml
    • 搞定!原来就写了两个内容,虽然不是很懂。
    cluster.name: "docker-cluster"
    network.host: 0.0.0.0
    

    查看配置文件内容

    知道了配置文件的内容,我就可以自定义一份配置信息,然后让容器启动时按照我的配置文件来执行就可以了,下面是我的配置信息。

    cluster.name: "docker-cluster"
    network.host: 0.0.0.0
    node.name: node-1
    cluster.initial_master_nodes: ["node-1"]
    

    2.3 成功的启动

    启动前先把之前的容器删除,反正留着也用不了。删除命令是docker rm ES01

    这次启动容器,让它带着我自定义的配置文件来启动,启动命令有点长,不过就多了一个配置信息,还是能看懂的。

    docker run -v ~/config/elasticsearch/es7140.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
    -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
    --name ES01 elasticsearch:7.14.0
    

    其中,~/config/elasticsearch/es7140.yml是我自定义配置信息的路径。

    成功启动

    这次算是真正的启动了,浏览器也可以访问了,不过浏览器访问至少要等个30秒,等容器启动之后才能真正访问到。

    浏览器访问


    参考资料

  • 相关阅读:
    手机储存卡被写保护怎样删掉
    EXT.NET复杂布局(四)——系统首页设计(下)
    排序算法——选择排序
    NET 程序员十种必备工具 目录
    三种序列化体式格式
    Limitations of SharePoint Web Services
    How to: Update List Items
    哄骗JQuery直接调用asp.net后台办法
    jquery Dialog 弹出窗插件
    EXT.NET高效开发(四)——实用技巧
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/15377228.html
Copyright © 2020-2023  润新知