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可访问

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

相关推荐
米高梅狮子8 小时前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
June`8 小时前
网络编程时内核究竟做了什么???
linux·服务器·网络
楼兰公子9 小时前
RK3588 + Linux7.0.3 网络工程调试错误速查手册
linux·网络·3588
Elnaij9 小时前
Linux系统与系统编程(9)——自设计shell与基础IO
linux·服务器
IMPYLH10 小时前
Linux 的 unexpand 命令
linux·运维·服务器·bash
|_⊙10 小时前
Linux 文件知识 补充
linux·运维·服务器
落羽的落羽11 小时前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
Mortalbreeze11 小时前
深度理解文件系统 ---- 从磁盘存储到内核存储
大数据·linux·数据库
C-200212 小时前
基于 JumpServer 容器化部署 ES 集群
大数据·elasticsearch·搜索引擎
LN花开富贵14 小时前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式