Docker 安装 Elasticsearch 8.x

news2025/4/16 10:43:52

Docker 安装 Elasticsearch 8.x

  • 前言
  • 一、准备工作
  • 二、设置容器的目录结构
  • 三、启动一个临时的容器来复制配置文件
  • 四、复制配置文件到本地目录
  • 五、删除临时容器
  • 六、创建并运行容器,挂载本地目录
  • 七、修改文件配置监听端口
  • 八、端口配置:Host 网络模式 vs Port 映射模式
    • 1. Host 网络模式
    • 2. Port 映射模式
  • 九、查看日志和检查容器状态
  • 十、访问服务
  • 十一、Elasticsearch 常用操作命令


前言

在现代应用架构中,Elasticsearch 是一款强大的分布式搜索引擎,广泛应用于日志分析、实时搜索、数据可视化等场景。通过 Docker 部署 Elasticsearch,可以快速搭建、灵活扩展,并与容器化平台无缝集成。

本文将详细介绍如何使用 Docker 安装和配置 Elasticsearch 8.x,包括目录结构设置、配置文件管理、容器启动与管理、端口配置、日志查看、服务访问等内容,帮助你快速搭建一个高效、可维护的 Elasticsearch 环境。

在这里插入图片描述


一、准备工作

首先,确保你的系统上已经安装了 Docker。

Linux上进行Docker安装有两种方式:

  1. Docker自动化安装
  2. Docker手动安装

可以根据该文章的步骤进行安装:https://blog.csdn.net/weixin_44876263/article/details/136714078?spm=1001.2014.3001.5502

二、设置容器的目录结构

为了持久化存储日志、数据、配置和插件,需要在宿主机上创建对应目录,并赋予 Elasticsearch 容器内部用户的写权限。

# 安装路径
DIR="/opt/docker/demo"
DOCKER_NAME="docker-elasticsearch"

# 创建目录结构
mkdir -p "$DIR/elasticsearch/logs"
mkdir -p "$DIR/elasticsearch/data"
mkdir -p "$DIR/elasticsearch/config"
mkdir -p "$DIR/elasticsearch/plugins"

# 赋予文件权限
chmod -R 777 $DIR/elasticsearch/

三、启动一个临时的容器来复制配置文件

启动一个临时的 Elasticsearch 容器,用于复制默认配置文件到宿主机。

docker run -d \
  --restart=always \
  --name elasticsearch \
  --network host \
  -p 9388:9200 \
  -p 9389:9300 \
  --privileged \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  docker.elastic.co/elasticsearch/elasticsearch:8.17.0

四、复制配置文件到本地目录

将容器中的配置文件复制到宿主机的对应目录。

docker cp elasticsearch:/usr/share/elasticsearch/data $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/plugins $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/config $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/logs $DIR/elasticsearch/

五、删除临时容器

docker stop elasticsearch
docker rm elasticsearch

六、创建并运行容器,挂载本地目录

使用以下命令启动 Elasticsearch 容器,并挂载本地目录。

docker run -d \
  --name "$DOCKER_NAME" \
  --restart=always \
  --network host \
  -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \
  -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \
  -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \
  -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  -e "ELASTIC_PASSWORD=123456" \
  docker.elastic.co/elasticsearch/elasticsearch:8.17.0

七、修改文件配置监听端口

修改配置文件 $DIR/elasticsearch/config/elasticsearch.yml

cluster.name: "docker-cluster"

network.host: 0.0.0.0

http.port: 9200

八、端口配置:Host 网络模式 vs Port 映射模式

1. Host 网络模式

docker run -d \
  --restart=always \
  --name "$DOCKER_NAME" \
  --network host \
  -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \
  -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \
  -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \
  -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  -e "ELASTIC_PASSWORD=123456" \
  docker.elastic.co/elasticsearch/elasticsearch:8.17.0
  • 特点

    在 Host 网络模式下,容器共享宿主机的网络栈,容器内的网络接口直接映射到宿主机的网络接口。​这意味着容器可以使用宿主机的 IP 地址和端口进行通信。​对于 Elasticsearch 来说,使用 Host 网络模式可以减少网络延迟,提高性能。

  • 优点

    • 简化网络配置,无需额外的 -p 端口映射。

    • 延迟更低,吞吐更高。

  • 缺点

    • 与宿主机完全共享端口,若宿主机已有同端口服务运行,会冲突。

    • 安全隔离较弱,容器网络直接暴露给宿主机。

2. Port 映射模式

docker run -d \
  --restart=always \
  --name "$DOCKER_NAME" \
  -p 9201:9200 \
  -p 9301:9300 \
  -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \
  -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \
  -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \
  -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  -e "ELASTIC_PASSWORD=123456" \
  docker.elastic.co/elasticsearch/elasticsearch:8.17.0
  • 特点

    在 Port 映射模式下,容器使用 Docker 的默认桥接网络,容器内的端口通过宿主机的端口进行映射。​这种方式适用于需要将容器服务暴露给外部访问的场景。​例如,将容器的 9200 端口映射到宿主机的 9201 端口。

  • 优点

    • 容器与宿主机网络隔离,提高安全性。

    • 可以在同一宿主机上运行多个容器,避免端口冲突。

  • 缺点

    • 可能增加网络延迟,影响性能。

    • 需要手动配置端口映射,增加配置复杂度。

九、查看日志和检查容器状态

使用以下命令查看 Elasticsearch 容器的日志:

docker logs -f "$DOCKER_NAME"

要查看容器的状态,可以使用:

docker ps -a

如果容器未运行,可以使用以下命令启动:

docker start "$DOCKER_NAME"

十、访问服务

在浏览器中访问以下地址,检查 Elasticsearch 是否正常运行
默认的用户名为:elastic
密码:123456

http://localhost:9200

如果使用了 Port 映射模式,并将容器的 9200 端口映射到宿主机的 9201 端口,则应访问:

http://localhost:9201

应该看到类似以下的 JSON 响应:

{
  "name" : "docker-cluster",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "abcdefghijklmno",
  "version" : {
    "number" : "8.17.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "1234567890abcdef",
    "build_date" : "2025-04-15T12:34:56.789Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.10.0"
  },
  "tagline" : "You Know, for Search"
}

在这里插入图片描述

十一、Elasticsearch 常用操作命令

  1. 检查集群健康状态

    使用以下命令检查 Elasticsearch 集群的健康状态:

    curl -X GET "localhost:9200/_cluster/health?pretty"
    
  2. 查看所有索引

    使用以下命令检查 Elasticsearch 集群的健康状态:

    curl -X GET "localhost:9200/_cat/indices?v"
    
  3. 创建索引

    使用以下命令创建一个新的索引:

    curl -X PUT "localhost:9200/my_index"
    
  4. 删除索引

    使用以下命令删除指定的索引:

    curl -X DELETE "localhost:9200/my_index"
    
  5. 查询索引中的所有文档

    使用以下命令查询索引中的所有文档:

    curl -X GET "localhost:9200/my_index/_search?q=*:*
    
  6. 修改用户密码

    Elasticsearch 提供了 elasticsearch-reset-password 工具,用于重置用户密码。​例如,重置 elastic 用户的密码:

    docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic
    

    执行后,系统将提示输入新密码并确认。​请确保在生产环境中妥善保管密码。

  7. 查看集群节点信息

    curl -X GET "localhost:9200/_cat/nodes?v"
    
  8. 查看集群分片分配情况

    curl -X GET "localhost:9200/_cat/shards?v"
    
  9. 查看集群所有分配情况

    curl -X GET "localhost:9200/_cat/allocation?v"
    
  10. 查看索引文档数量

    curl -X GET "localhost:9200/my_index/_count"
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue工程化开发脚手架Vue CLI

开发Vue有两种方式 核心包传统开发模式:基于html / css / js 文件,直接引入核心包,开发 Vue。工程化开发模式:基于构建工具(例如:webpack)的环境中开发Vue。 脚手架Vue CLI Vue CLl 是 Vue 官方…

开源智慧巡检——无人机油田AI视频监控的未来之力

油田巡检,关乎能源命脉,却常受困于广袤地形、高危环境和人工效率瓶颈。管道泄漏、设备故障、非法闯入——这些隐患稍有疏忽,便可能酿成大患。传统巡检已无法满足现代油田对安全与效率的需求,而无人机油田巡检系统正以智能化之力重…

Django从零搭建卖家中心登陆与注册实战

在电商系统开发中,卖家中心是一个重要的组成部分,而用户注册与登陆则是卖家中心的第一步。本文将详细介绍如何使用Django框架从零开始搭建一个功能完善的卖家注册页面,包括前端界面设计和后端逻辑实现。 一、项目概述 我们将创建一个名为sel…

MySQL表的使用(4)

首先回顾一下之前所学的增删查改,这些覆盖了平时使用的80% 我们上节课中学习到了MySQL的约束 其中Primary key 是主键约束,我们今天要学习的是外键约束 插入一个表 外键约束 父表 子表 这条记录中classid为5时候,不能插入; 删除…

ollama修改配置使用多GPU,使用EvalScope进行模型压力测试,查看使用负载均衡前后的性能区别

文章目录 省流结论机器配置不同量化模型占用显存1. 创建虚拟环境2. 创建测试jsonl文件3. 新建测试脚本3. 默认加载方式,单卡运行模型3.1 7b模型输出213 tok/s3.1 32b模型输出81 tok/s3.1 70b模型输出43tok/s 4. 使用负载均衡,多卡运行4.1 7b模型输出217t…

Dijkstra算法求解最短路径—— 从零开始的图论讲解(2)

前言 在本系列第一期:从零开始的图论讲解(1)——图的概念,图的存储,图的遍历与图的拓扑排序-CSDN博客 笔者给大家介绍了 图的概念,如何存图,如何简单遍历图,已经什么是图的拓扑排序 按照之前的学习规划,今天笔者将继续带大家深入了解图论中的一个核心问题&#x…

[连载]Transformer架构详解

Transformer: Attention Is All You Need Paper 地址:https://arxiv.org/abs/1706.03762 Paper 代码:https://github.com/tensorflow/tensor2tensor Paper 作者:Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan…

LVGL Video控件和Radiobtn控件详解

LVGL Video控件和Radiobtn控件详解 一、 Video控件详解1. 概述2. 创建和初始化3. 基本属性设置4. 视频控制5. 回调函数6. 高级功能7. 注意事项 二、Radiobtn控件详解1. 概述2. 创建和初始化3. 属性设置4. 状态控制5. 组管理6. 事件处理7. 样式设置8. 注意事项 三、效果展示四、…

组合数哭唧唧

前言&#xff1a;手写一个简单的组合数&#xff0c;但是由于长期没写&#xff0c;导致一些细节没处理好 题目链接 #include<bits/stdc.h> using namespace std; #define endl "\n"#define int long longconst int N (int)2e510; const int Mod (int)1e97;int…

NLP高频面试题(四十二)——RAG系统评估:方法、指标与实践指南

1. 引言:RAG系统概述与评估挑战 检索增强生成(Retrieval-Augmented Generation,简称 RAG)是近年来自然语言处理领域的一个重要进展。RAG系统在大型语言模型生成文本的过程中引入了外部检索模块,从外部知识库获取相关信息,以缓解纯生成模型可能出现的幻觉和知识盲点。通过…

Linux路漫漫

目录 Vim模式 基本操作 文本编辑 更多功能 1. 直接启动 Vim 2. 打开一个已存在的文件 3. 打开多个文件 4. 以只读模式打开文件 5. 从指定行号开始编辑 6. 快速打开并执行命令 7. 检查是否安装了 Vim 8. 退出 Vim 前提条件 SCP 命令格式 具体操作 1. Windows 命…

游戏引擎学习第227天

今天的计划 今天的工作重点是进行吸引模式&#xff08;attract mode&#xff09;的开发&#xff0c;主要是处理游戏的进出和其他一些小的细节问题&#xff0c;这些是之前想要整理和清理的部分。我做了一些工作&#xff0c;将游戏代码中的不同部分分离到逻辑上独立的区域&#…

一键直达:用n8n打造谷歌邮箱到Telegram的实时通知流

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 一键直达&#xff1a;用n8n打造谷歌邮箱到Telegram的实时通知流 前言n8n的强大之处实现简便性实战…

【QT】 QT定时器的使用

QT定时器的使用 1. QTimer介绍&#xff08;1&#xff09;QTimer的使用方法步骤示例代码1&#xff1a;定时器的启动和关闭现象&#xff1a;示例代码2&#xff1a;定时器每隔1s在标签上切换图片现象&#xff1a; (2)实际开发的作用 2.日期 QDate(1)主要方法 3.时间 QTime(1)主要方…

【自动化测试】如何获取cookie,跳过登录的简单操作

前言 &#x1f31f;&#x1f31f;本期讲解关于自动化测试函数相关知识介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…

每天五分钟深度学习PyTorch:RNN CELL模型原理以及搭建

本文重点 RNN Cell(循环神经网络单元)是循环神经网络(RNN)的核心组成部分,用于处理序列数据中的每个时间步,并维护隐藏状态以捕获序列中的时间依赖关系。 RNN CELL的结构 RNN是一个循环结构,它可以看作是RNN CELL的循环,RNN CELL的结构如下图所示,RNN CELL不断进行…

【基于开源insightface的人脸检测,人脸识别初步测试】

简介 InsightFace是一个基于深度学习的开源人脸识别项目,由蚂蚁金服的深度学习团队开发。该项目提供了人脸检测、人脸特征提取、人脸识别等功能,支持多种操作系统和深度学习框架。本文将详细介绍如何在Ubuntu系统上安装和实战InsightFace项目。 目前github有非常多的人脸识…

进程(完)

今天我们就补充一个小的知识点,查看进程树命令,来结束我们对linux进程的学习,那么话不多说,来看. 查看进程树 pstree 基本语法&#xff1a; pstree [选项] 优点&#xff1a;可以更加直观的来查看进程信息 常用选项&#xff1a; -p&#xff1a;显示进程的pid -u&#xff…

【控制学】控制学分类

【控制学】控制学分类 文章目录 [TOC](文章目录) 前言一、工程控制论1. 经典控制理论2. 现代控制理论 二、生物控制论三、经济控制论总结 前言 控制学是物理、数学与工程的桥梁 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、工程控制论 1. 经典…

软考中级-软件设计师 2022年上半年下午题真题解析:通关秘籍+避坑指南

&#x1f4da; 目录&#xff08;快速跳转&#xff09; 大题&#xff08;下午题&#xff09;&#xff08;每题15分&#xff0c;共75分&#xff09;一、结构化分析与设计&#x1f354; 试题一&#xff1a;外卖订餐系统 二、数据库应用分析与设计&#x1f697; 试题二&#xff1a;…