docker下安装 es 设置账号密码

在 Docker 中安装 Elasticsearch 并设置账号密码涉及以下步骤:

1. 拉取 Elasticsearch 镜像

确保你已经拉取了 Elasticsearch 的官方镜像。例如:

bash 复制代码
docker pull elasticsearch:7.10.2

2. 创建配置文件

在本地创建一个配置文件 elasticsearch.yml,用于启用安全功能并设置基本认证。

示例内容如下:

yaml 复制代码
# 启用安全功能
xpack.security.enabled: true

# 设置默认的管理员用户名和密码(如果需要)
xpack.security.authc.realms.file1:
  order: 0
  file: ${ES_HOME}/config/users.yml

注意:Elasticsearch 7.x 及以上版本默认启用了安全功能,但你可以通过上述配置文件进一步调整。


3. 创建用户账户和密码

在本地创建一个 users.yml 文件,用于定义用户的认证信息。例如:

yaml 复制代码
# 用户名: 密码(加密格式)
elastic:
  hash: $2a$10$f5rEoBvQ5jZnD6GhIuKLmuzF7gqTlPwJ9kXsY8eD9pOcWdQz1AxBc
# 示例密码:elastic

注意hash 是加密后的密码。你可以使用在线工具(如 bcrypt)生成 bcrypt 哈希值。


4. 挂载配置文件到 Docker 容器

使用 Docker 运行 Elasticsearch,并挂载本地的 elasticsearch.ymlusers.yml 文件到容器中。

示例命令:

bash 复制代码
docker run -p 9200:9200 -p 9300:9300 \
  --name elasticsearch-security \
  -v /path/to/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /path/to/users.yml:/usr/share/elasticsearch/config/users.yml \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  elasticsearch:7.10.2

5. 使用 Kibana 创建用户(可选)

如果你启用了 Elasticsearch 的安全功能,可以通过 Kibana 创建用户和角色。

  • 拉取并运行 Kibana:

    bash 复制代码
    docker run -p 5601:5601 --link elasticsearch-security:kibana_elasticsearch --name kibana elasticsearch/kibana:7.10.2
  • 打开浏览器,访问 http://localhost:5601

  • 在 Kibana 中,进入 "Management" -> "Security" -> "Users",创建新的用户和密码。


6. 通过 API 创建用户(可选)

如果你不想使用 Kibana,也可以通过 Elasticsearch 的 REST API 创建用户。例如:

bash 复制代码
curl -X POST http://localhost:9200/_security/user/admin \
  -H "Content-Type: application/json" \
  -u elastic:ElasticPassword \
  -d '{
        "username": "admin",
        "password": "Admin@123",
        "roles": ["superuser"]
      }'

7. 验证账号密码是否生效

使用基本认证访问 Elasticsearch:

bash 复制代码
curl -u elastic:ElasticPassword http://localhost:9200

如果返回正常的 JSON 响应,则说明账号密码配置成功。


8. 持久化数据和日志(可选)

为了防止容器重启后数据丢失,可以将 Elasticsearch 的数据目录和日志目录挂载到宿主机:

bash 复制代码
docker run -p 9200:9200 -p 9300:9300 \
  --name elasticsearch-security \
  -v /path/to/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /path/to/users.yml:/usr/share/elasticsearch/config/users.yml \
  -v /path/to/es-data:/usr/share/elasticsearch/data \
  -v /path/to/es-logs:/usr/share/elasticsearch/logs \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  elasticsearch:7.10.2

总结

通过上述步骤,你可以在 Docker 中运行 Elasticsearch 并启用账号密码认证。默认情况下,Elasticsearch 7.x 及以上版本已经启用了安全功能,但你需要通过配置文件和用户管理工具(如 Kibana 或 REST API)来设置具体的用户和权限。

如果你需要进一步增强安全性,可以考虑:

  • 启用 HTTPS
  • 配置防火墙规则
  • 使用更复杂的密码策略
相关推荐
Elastic 中国社区官方博客4 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
皮皮冰燃5 小时前
docker-18-WSL中安装docker并部署flask服务
docker·容器·flask
少年白char6 小时前
整理上万首音乐后的完整工作流:下载、刮削、播放与避坑指南
docker·nas·musictag·音乐刮削·音乐标签
身如柳絮随风扬7 小时前
深度解析 Elasticsearch 搜索服务:核心原理、架构与优化实践
大数据·elasticsearch·架构
kft13147 小时前
AI 驱动测试 2.0:当测试智能体成为你的“超级 QA“
大数据·人工智能·elasticsearch
测试那点事儿11 小时前
第2章零基础接口自动化到 Jenkins 持续集成【本地环境准备与首次跑通】
ci/cd·自动化·jenkins
Elastic 中国社区官方博客13 小时前
在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·可用性测试
萧行之13 小时前
Docker部署Loki+Grafana+Vector实现全服务器日志监控(含N8N/SSH/Fail2ban监控)
服务器·docker·grafana
人工智能培训14 小时前
工程科研中的AI应用:结构力学分析技巧
人工智能·深度学习·机器学习·docker·容器
计算机安禾14 小时前
【Linux从入门到精通】第35篇:容器化技术预备——Docker安装与基本概念
linux·运维·docker