使用Docker安装和部署Elasticsearch出现问题以及解决方案

🎈1 参考文档

docker安装elasticsearch(最详细版)| Bright1668-CSDN

es在Windows环境启动报错 | 你道本部院是个书生-CSDN

🚀2 安装和部署Elasticsearch

2.1 设置max_map_count

  1. 查看max_map_count的值 默认是65530

    bash 复制代码
    cat /proc/sys/vm/max_map_count
  2. 重新设置max_map_count的值。

    bash 复制代码
    sysctl -w vm.max_map_count=262144

2.2 拉取镜像

bash 复制代码
docker pull elasticsearch::8.0.1

2.3 创建容器

bash 复制代码
docker run --name es -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e xpack.security.enabled=false \
-d elasticsearch:8.0.1
  • --name es:设置容器的名称为"es"。
  • -p 9200:9200 -p 9300:9300:这部分将主机的端口与容器的端口进行映射。
  • -e "discovery.type=single-node":通过设置此环境变量,将Elasticsearch配置为单节点模式。
  • -e ES_JAVA_OPTS="-Xms512m -Xmx512m":这部分设置了Elasticsearch的Java虚拟机(JVM)选项。具体来说,设置了初始堆大小(Xms)为512MB和最大堆大小(Xmx)为512MB。
  • -e xpack.security.enabled=false:此部分设置了Elasticsearch的安全性选项。通过将xpack.security.enabled设置为false,禁用了Elasticsearch的安全特性。在实际生产环境中,通常会启用安全性来保护Elasticsearch集群。
  • -d:此选项告诉Docker在后台运行容器,即以守护进程模式运行容器。
  • elasticsearch:8.0.1:最后部分指定了要运行的Docker镜像的名称和版本。

2.4 访问Elasticsearch

在浏览器中导航到http://your_server_ip:9200,访问Elasticsearch信息页面。

🚀3 安装Elasticsearch Head

3.1 拉取镜像和创建容器

bash 复制代码
# 拉取镜像
docker pull mobz/elasticsearch-head:5

# 创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

# 启动容器
docker start elasticsearch-head

3.2 访问Elasticsearch Head

在浏览器中导航到http://your_server_ip:9100,访问Elasticsearch Head管理页面。

🚩 4 出现的问题

4.1 尝试连接Easticsearch会出现无法访问此网站

  1. 由于是前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置。

  2. 解决办法:修改docker中elasticsearch的elasticsearch.yml文件。

    bash 复制代码
    docker exec -it elasticsearch /bin/bash (进不去使用容器id进入)
    
    vi config/elasticsearch.yml
  3. 在最下面添加2行。

    bash 复制代码
    http.cors.enabled: true 
    http.cors.allow-origin: "*"
  4. 退出并重启服务

    bash 复制代码
    exit
    docker restart elasticsearch-head

4.2 进行跨域修改之后还是无法访问

  1. 查看日志。

    bash 复制代码
    docker logs -f es
  2. 因为ES默认会去官网下载最新的GEO信息,公司内网server一般和外网不通或者网速慢,所以会报错。

    bash 复制代码
    {"@timestamp":"2023-09-03T03:24:59.123Z", "log.level":"ERROR", "message":"exception during geoip databases update", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[29b38b4a9a99][generic][T#4]","log.logger":"org.elasticsearch.ingest.geoip.GeoIpDownloader","elasticsearch.cluster.uuid":"1tSrvzuJQfaJmy8qyEmwnQ","elasticsearch.node.id":"EzRz2RjkQLC112uJ_BYZUg","elasticsearch.node.name":"29b38b4a9a99","elasticsearch.cluster.name":"docker-cluster","error.type":"java.net.UnknownHostException","error.message":"geoip.elastic.co","error.stack_trace":"java.net.UnknownHostException: geoip.elastic.co\n\tat java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567)\n\tat 
    ...
  3. 仍需要编辑config/elasticsearch.yml,在末尾添加。

    bash 复制代码
    ingest.geoip.downloader.enabled: false

4.3 Elasticsearch-head操作时不修改配置,默认会报406错误码

  1. 修改配置。

    bash 复制代码
    #复制vendor.js到外部
    docker cp elasticsearch-head:/usr/src/app/_site/vendor.js /usr/local/
    
    #修改vendor.js
    vim /usr/src/app/_site/vendor.js
  2. 编辑vendor.js。

    • 6886行:contentType:"application/x-www-form-urlencoded" 改成contentType:"application/json;charset=UTF-8"
    • 7574行:var inspectData = s.contentType === "application/x-www-form-urlencoded"&& 改成var inspectData = s.contentType === contentType:"application/json;charset=UTF-8&&"
  3. 修改完成在复制回容器。

    bash 复制代码
    docker cp /usr/local/vendor.js  elasticsearch-head:/usr/src/app/_site
  4. 重启elasticsearch-head。

    bash 复制代码
    docker restart elasticsearch-head
相关推荐
霁月的小屋7 分钟前
Docker 工程化实践(六):Docker Compose 管理多容器应用
运维·docker·容器
2601_9657984715 分钟前
How to Build a Custom Artisan Store on WordPress: Crafti Theme Review
linux·服务器·数据库
mounter62519 分钟前
深度解析 Linux 内核中的 iomap 子系统:历史、演进、核心机制与未来
linux·文件系统·linux kernel·kernel·iomap
江湖有缘44 分钟前
Docker实战 | 使用Docker部署EasyNode服务器面板工具
服务器·docker·容器
心机之蛙qee1 小时前
Docker Compose 多容器编排
java·docker·容器
AI大佬的小弟1 小时前
私有化 Dify 应用开发(1):Dify 入门|Docker 一键部署全流程
docker·大模型落地·ai 应用开发·dify 教程·私有化 ai 部署·docker 实战·开源 ai 平台
养海绵宝宝的小蜗2 小时前
LVS(Linux Virtual Server)项目知识点总结
linux·运维·lvs
ShiXZ2132 小时前
Docker 安装 Elasticsearch 7.17.6 完整教程
elasticsearch·docker·容器
阿黎02143 小时前
Linux驱动
linux
tjjingpan3 小时前
HCIP-Datacom Core Technology V1.0_20 IPv6概述
linux·服务器·网络