Docker安装Elasticsearch 8.x的实现示例

 更新时间:2025年04月17日 08:28:22   作者:代码怪兽大作战  
本文主要介绍了Docker安装Elasticsearch8.x,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

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

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

在这里插入图片描述

一、准备工作

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

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

  • Docker自动化安装
  • Docker手动安装

可以根据该文章的步骤进行安装:https://www.jb51.net/server/322968bze.htm

二、设置容器的目录结构

为了持久化存储日志、数据、配置和插件,需要在宿主机上创建对应目录,并赋予 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 常用操作命令

检查集群健康状态

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

curl -X GET "localhost:9200/_cluster/health?pretty"

查看所有索引

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

curl -X GET "localhost:9200/_cat/indices?v"

创建索引

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

curl -X PUT "localhost:9200/my_index"

删除索引

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

curl -X DELETE "localhost:9200/my_index"

查询索引中的所有文档

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

curl -X GET "localhost:9200/my_index/_search?q=*:*

修改用户密码

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

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

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

查看集群节点信息

curl -X GET "localhost:9200/_cat/nodes?v"

查看集群分片分配情况

curl -X GET "localhost:9200/_cat/shards?v"

查看集群所有分配情况

curl -X GET "localhost:9200/_cat/allocation?v"

查看索引文档数量

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

到此这篇关于Docker 安装 Elasticsearch 8.x的文章就介绍到这了,更多相关Docker 安装 Elasticsearch 8.x内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 拉取镜像及标签操作 pull | tag

    Docker 拉取镜像及标签操作 pull | tag

    这篇文章主要介绍了Docker 拉取镜像及标签操作 pull | tag,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • dockerfile中ENTRYPOINT与CMD的结合使用及区别

    dockerfile中ENTRYPOINT与CMD的结合使用及区别

    这篇文章主要介绍了dockerfile中ENTRYPOINT与CMD的结合使用,大家都知道CMD 与 ENTRYPOINT都是用于指定启动容器执行的命令,那么他们俩有什么区别呢,本文给大家详细介绍,需要的朋友可以参考下
    2021-08-08
  • docker compose入门helloworld的详细过程

    docker compose入门helloworld的详细过程

    docker-compose是基于docker的,所以我们需要先安装docker才能使用docker-compose,接下来通过本文给大家介绍docker compose入门helloworld的过程,一起看看吧
    2021-09-09
  • CentOS8下的Docker使用详解

    CentOS8下的Docker使用详解

    这篇文章主要介绍了CentOS8下的Docker使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 基于VS Code的Docker调试环境搭建过程

    基于VS Code的Docker调试环境搭建过程

    本文详细介绍了如何在VSCode中配置和使用Docker容器进行Autoware项目的开发调试,通过安装Docker和VSCode插件,配置开发容器,挂载本地目录,以及使用colcon编译项目,使得开发环境更加高效和一致
    2026-02-02
  • docker下创建redis集群步骤详解

    docker下创建redis集群步骤详解

    这篇文章介绍了如何在Docker环境下创建Redis集群的步骤,包括解决Redis镜像问题、配置国内加速、准备部署、创建配置文件、编写docker-compose.yml、执行部署命令、创建集群、验证集群和查看集群信息等,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • ubuntu如何在docker容器中安装strongswan

    ubuntu如何在docker容器中安装strongswan

    这篇文章主要介绍了ubuntu如何在docker容器中安装strongswan,起动一个ubuntu容器,我是用的docker compose启动的,compose的配置文件为ipsec-strongswan.yml,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • docker打包Python环境的过程详解

    docker打包Python环境的过程详解

    这篇文章主要介绍了docker打包Python环境过程,准备工作需要大家复制python程序启动程序,具体操作流程跟随小编一起看看吧
    2021-08-08
  • Docker制作镜像的两种方式(在线制作和离线制作)

    Docker制作镜像的两种方式(在线制作和离线制作)

    我们知道要创建一个Docker容器,要先有Docker镜像,Docker镜像怎么创建的呢?下面这篇文章主要给大家介绍了关于Docker制作镜像的两种方式(在线制作和离线制作)的相关资料,需要的朋友可以参考下
    2023-03-03
  • 详解使用docker搭建hadoop分布式集群

    详解使用docker搭建hadoop分布式集群

    本篇文章主要介绍了详解使用docker搭建hadoop分布式集群,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论