【Docker】Docker 中安装 Elasticsearch 保姆级

文章目录

  • 1. Docker 中搞定 Elasticsearch
    • 1.1. Docker 安装 Elasticsearch
    • 1.2. Elasticsearch 不能访问咋弄
    • 1.3. 能不能搞最简单的(即不用加密)
  • 2. 参考资料

1. Docker 中搞定 Elasticsearch

1.1. Docker 安装 Elasticsearch

  1. 先下载Elasticsearch镜像(注意这里不是去Docker官方去下载的,而是去es官方下载的)

    docker pull docker.elastic.co/enterprise-search/enterprise-search:8.7.1
    
  2. 用 Docker 运行 Elasticsearch

    用本地文件跟Docker中的文件映射,方便修改和查看文件。我的本地文件地址换成你自己的地址

    docker run -p 9200:9200 -p 9300:9300 --name elasticsearch_8.7.1 \
    -e "discovery.type=single-node" \
    -e "cluster.name=elasticsearch" \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
    -v /Users/apple/Documents/Work/mydata/elasticsearch_8.7.1/plugins:/usr/share/elasticsearch/plugins \
    -v /Users/apple/Documents/Work/mydata/elasticsearch_8.7.1/data:/usr/share/elasticsearch/data \
    -d elasticsearch:8.7.1
    

1.2. Elasticsearch 不能访问咋弄

  1. http://localhost:9200访问发现不行,并查看端口、查看日志【注意elasticsearch启动挺慢的,要在启动后测试啊!】。

    用浏览器访问没有不能访问,于是看是不是端口没开启

    telnet localhost 9200
    

    但是发现端口 9200 是开启的,那为啥不行呢,用 curl http://localhost:9200 试试

    大概意思是没有认证,再用 docker logs -f elasticsearch_8.7.1 查看下日志得到如下日志

    【Docker】Docker 中安装 Elasticsearch 保姆级_第1张图片

    日志的大概意思就是收到了请求但是是在 https 通道上,预测猜测是不是要用 https://localhost:9200 访问。试了一下确实可以访问,但是需要用户名和密码,密码是什么呢,一般密码是在日志文件中打印的,也只能继续去官网查看消息。

    【Docker】Docker 中安装 Elasticsearch 保姆级_第2张图片

    现在的 elasticsearch 对比之前版本加强了安全防护,需要用https且要求用户名和密码

  2. 去官网找默认用户和密码的信息

    比较遗憾的时按照我们上面的启动方式而不是按照官网的启动方式,是没有办法看到打印出来的日志的(官网的启动方式是可以的),那只能根据官网提示的方式去修改密码

    # 在docker容器中执行命令修改用户elastic的密码
    bin/elasticsearch-reset-password -u elastic
    

    【Docker】Docker 中安装 Elasticsearch 保姆级_第3张图片

    用用户名称elastic和密码I7ZU7vuE7Dm=a7weqJ3i登录https://localhost:9200就可以成功了,成功后会得到如下一串JSON

    {
      "name": "04f5d152fa87",
      "cluster_name": "elasticsearch",
      "cluster_uuid": "z0r22Tg3Q4aYpSDJBMJeaQ",
      "version": {
        "number": "8.7.1",
        "build_flavor": "default",
        "build_type": "docker",
        "build_hash": "f229ed3f893a515d590d0f39b05f68913e2d9b53",
        "build_date": "2023-04-27T04:33:42.127815583Z",
        "build_snapshot": false,
        "lucene_version": "9.5.0",
        "minimum_wire_compatibility_version": "7.17.0",
        "minimum_index_compatibility_version": "7.0.0"
      },
      "tagline": "You Know, for Search"
    }
    

1.3. 能不能搞最简单的(即不用加密)

当然可以,而且在开发测试阶段很推荐使用,方法如下:

进入到 docker 的 elasticsearch_8.7.1 容器中,修改配置文件 config/elasticsearch.yml

docker exec -it elasticsearch_8.7.1 /bin/bash
# 编辑文件
vi config/elasticsearch.yml

但是遗憾vi命令在docker容器是没有安装的,那换一个方法。步骤如下:

  1. 先从容器中拷贝配置文件到主机上

    # docker cp 源 目标
    docker cp elasticsearch_8.7.1:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch.yml
    
  2. 在主机上修改配置文件(把有关加密的都修改为false)如下:

    【Docker】Docker 中安装 Elasticsearch 保姆级_第4张图片

  3. 在把主机上的配置文件拷贝回容器覆盖容器原有的配置文件

    # 只要把docker cp 的源和目标反过来就行了
    docker cp elasticsearch.yml elasticsearch_8.7.1:/usr/share/elasticsearch/config/elasticsearch.yml
    

重启容器docker restart elasticsearch_8.7.1访问http://localhost:9200发现不要用户名和密码了。哈哈

2. 参考资料

官网:https://www.elastic.co/guide/en/enterprise-search/current/docker.html#docker-image

你可能感兴趣的:(Docker,docker,elasticsearch)