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@813、Es123!456、Admin@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 部署流程,核心要点:
- 必须配置内核参数和目录权限
- 777权限是解决权限问题的最优方案
- 密码重置推荐手动指定方式
- ES8.x强制使用HTTPS和强密码
- 验证标准:容器正常 + 日志无错 + HTTPS可访问
此部署为单机版,满足大多数开发、测试及中小业务生产需求。