Linux 环境 Docker 部署 Elasticsearch 8.13 完整版教程

Linux 环境 Docker 部署 Elasticsearch 8.13 完整版教程

前言

Elasticsearch 8.x 系列相较于 7.x 版本,默认强制开启:

  • 账号密码认证
  • HTTPS 加密传输
  • 集群安全校验

是生产环境的安全标配版本,也是目前企业主流使用版本。

一、部署前置准备 & 环境要求

系统要求

  • 操作系统:CentOS7+/Ubuntu18+/Debian10+ 通用
  • 核心依赖:已安装 Docker
  • 内存要求:物理内存 ≥ 2G(ES8.x 最低硬性要求)
  • 端口放行:9200(HTTP访问)、9300(集群通信)
  • 账号要求:使用 root 账号执行命令

二、Linux 系统内核参数优化(必做)

1. 临时配置(立即生效,重启失效)

bash 复制代码
# 增加虚拟内存映射数量
sysctl -w vm.max_map_count=262144
# 放开单进程文件句柄数限制
ulimit -n 65535
# 放开单用户进程/线程数限制
ulimit -u 4096

2. 永久配置(重启不丢失)

编辑内核配置文件:

bash 复制代码
vi /etc/sysctl.conf

在文件末尾追加:

conf 复制代码
vm.max_map_count=262144
fs.file-max=65535

使配置生效:

bash 复制代码
sysctl -p

配置文件句柄和线程数:

bash 复制代码
vi /etc/security/limits.conf

文件末尾追加(有些机器已经配置过了):

conf 复制代码
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096

三、创建 ES 目录并配置权限

1. 创建目录结构

bash 复制代码
# 假设你本机的目录是/data/elasticsearch
mkdir -p /data/elasticsearch/{data,config,logs,plugins}

目录说明:

  • data:存储 ES 索引数据
  • config:存储 ES 核心配置文件
  • logs:存储 ES 运行日志
  • plugins:存储 ES 插件

2. 配置目录权限

bash 复制代码
chmod -R 777 /data/elasticsearch/

3. 创建配置文件

bash 复制代码
vi /data/elasticsearch/config/elasticsearch.yml

写入配置:

yaml 复制代码
cluster.name: docker-cluster
node.name: es-node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
cluster.initial_master_nodes: ["es-node-1"]
discovery.type: single-node
# 开启跨域,适配Kibana/前端可视化工具连接
http.cors.enabled: true
http.cors.allow-origin: "*"
# 自动创建索引,无需手动创建
action.auto_create_index: true

四、拉取 Elasticsearch 8.13 官方镜像

bash 复制代码
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.0

验证镜像:

bash 复制代码
docker images | grep elasticsearch

五、启动 ES8.13 容器

bash 复制代码
docker run -d \
  --name elasticsearch-813 \  
  --restart=always \
  --privileged=true \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
  -e "xpack.security.enabled=true" \
  -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
  -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  docker.elastic.co/elasticsearch/elasticsearch:8.13.0  # 默认镜像源(根据实际情况调整)

核心参数说明(理解后可按需调整)

  • -d:后台运行容器;
  • --name:容器名称,自定义即可;
  • --restart=always:服务器开机自启 ES 容器;
  • --privileged=true:授予容器最高权限,解决挂载目录访问问题;
  • -e "ES_JAVA_OPTS=-Xms1g -Xmx1g":配置 ES 的 JVM 内存,1G 为最低值,内存充足可改为 2G;
  • -v:目录挂载,实现宿主机与容器的文件同步,核心是实现数据持久化;
  • -e "xpack.security.enabled=true":显式开启安全认证,8.x 默认开启,无需修改。

六、重置 Elastic 账号密码

方式1:自动生成随机强密码

bash 复制代码
docker exec -it elasticsearch-813 bin/elasticsearch-reset-password -u elastic

方式2:手动指定自定义密码(推荐)

bash 复制代码
docker exec -it elasticsearch-813 bin/elasticsearch-reset-password -u elastic -i

方式3:静默指定密码

bash 复制代码
docker exec -it elasticsearch-813 bin/elasticsearch-reset-password -u elastic -b --password "Elastic@813"

密码强度要求

  • 长度 ≥ 8 位
  • 必须包含:大写字母 + 小写字母 + 数字 + 特殊符号
  • 合规示例:Elastic@813Es123!456Admin@2026

七、验证部署成功

1. 查看容器状态

bash 复制代码
docker ps | grep elasticsearch-813

2. 查看运行日志

bash 复制代码
docker logs -f elasticsearch-813

3. 访问 ES 接口

bash 复制代码
curl -k -u elastic:你的自定义密码 https://localhost:9200

成功返回示例:

json 复制代码
{
  "name" : "es-node-1",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "xxxxxxxxxxxxxxxx",
  "version" : {
    "number" : "8.13.0",
    "build_flavor" : "default",
    "build_type" : "docker"
  },
  "tagline" : "You Know, for Search"
}

八、常用运维命令

容器基础操作

bash 复制代码
# 启动ES容器
docker start elasticsearch-813
# 停止ES容器
docker stop elasticsearch-813
# 重启ES容器
docker restart elasticsearch-813
# 查看容器运行状态
docker ps | grep elasticsearch-813

日志查看

bash 复制代码
# 实时查看日志
docker logs -f elasticsearch-813
# 查看最近100行日志
docker logs --tail=100 elasticsearch-813

插件安装(IK分词器示例)

bash 复制代码
# 进入容器
docker exec -it elasticsearch-813 /bin/bash
# 安装IK分词器
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.13.0/elasticsearch-analysis-ik-8.13.0.zip
# 重启容器
docker restart elasticsearch-813

九、常见问题解决方案

问题 原因 解决方案
容器启动后立即退出,报 vm.max_map_count 错误 内核参数未配置 执行 sysctl -w vm.max_map_count=262144
日志报 Permission denied 目录权限不足 执行 chmod -R 777 /data/elasticsearch/
HTTP访问无响应 8.x强制HTTPS 使用HTTPS协议访问
密码重置失败 密码强度不够 使用包含大小写+数字+特殊符号的密码

十、Docker 快速安装(可选)

如未安装Docker,执行以下命令:

bash 复制代码
# 安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 启动Docker并设置开机自启
systemctl start docker && systemctl enable docker
# 验证安装
docker --version

总结

本教程实现了完整的 ES 8.13 部署流程,核心要点:

  1. 必须配置内核参数和目录权限
  2. 777权限是解决权限问题的最优方案
  3. 密码重置推荐手动指定方式
  4. ES8.x强制使用HTTPS和强密码
  5. 验证标准:容器正常 + 日志无错 + HTTPS可访问

此部署为单机版,满足大多数开发、测试及中小业务生产需求。

相关推荐
生活很暖很治愈19 分钟前
Linux——孤儿进程&进程调度&大O(1)调度
linux·服务器·ubuntu
Dxy123931021634 分钟前
Elasticsearch 索引与映射:为你的数据打造一个“智能仓库”
大数据·elasticsearch·搜索引擎
HalvmånEver35 分钟前
Linux:线程同步
linux·运维·服务器·线程·同步
Zach_yuan37 分钟前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][I2C]I2C
linux·笔记·学习
VekiSon1 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
Y1rong1 小时前
linux之网络
linux
寄存器漫游者2 小时前
Linux 软件编程 - IO 编程
linux·运维·spring
_别来无恙_2 小时前
TFTP的使用Linux
linux·服务器
Zaralike2 小时前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络