前言
Elasticsearch 是一个开源的高可用的搜索引擎,最初用于全文检索的场景下。经过多次更新迭代,它已经逐渐成为了一套面向大数据场景的解决方案,主要被应用在了数据分析、监控、安全等领域。在实际应用中,Elasticsearch 大多比较常规的安装方式是在宿主机上直接部署。但是,这样的处理方式有时候并不可取,特别是一些特殊环境下。本文主要介绍如何在 Docker 容器中安装 Elasticsearch。
步骤
准备 Elasticsearch 安装包
在 Elasticsearch 官网 下载对应系统版本的 Elasticsearch 安装包 (以 elasticsearch-7.10.0-linux-x86_64.tar.gz 为例)。此处以 CentOS 系统为例,将安装包解压到宿主机的 /opt 目录下。
$ tar -zxvf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /opt
创建 Dockerfile 文件
在宿主机上新建一个文件夹,例如 /opt/docker-elasticsearch,在该文件夹下创建一个 Dockerfile 文件,内容如下。
// javascriptcn.com 代码示例 # Base Image FROM centos:7.8.2003 # Elasticsearch Version ARG VERSION=7.10.0 # Install Required Package RUN yum install -y mc wget which java-1.8.0-openjdk # Copy Elasticsearch File ADD ./elasticsearch-${VERSION}-linux-x86_64.tar.gz /opt # Set Environment Variables ENV ES_HOME /opt/elasticsearch-${VERSION} ENV PATH $PATH:$ES_HOME/bin ENV ES_JAVA_OPTS "-Xms512m -Xmx1024m" # Expose Port EXPOSE 9200 9300 # Start Elasticsearch CMD ["/opt/elasticsearch-${VERSION}/bin/elasticsearch"]
上述 Dockerfile 中主要做了以下几件事情:
从官方 CentOS 镜像构建 Docker 容器镜像。
指定 Elasticsearch 版本,这里以 7.10.0 为例。
安装依赖的包,包括 mc、wget、which 和 Java 环境。
添加宿主机上解压后的 Elasticsearch 文件,文件路径为 /opt/elasticsearch-${VERSION}。
设置 Elasticsearch 容器内环境变量,其中 $PATH 和 ES_JAVA_OPTS 分别加入了 Elasticsearch 的二进制文件和 JVM 参数。
暴露 Elasticsearch 默认端口号 9200 和节点交流端口号 9300。
启动 Elasticsearch。
构建 Docker 镜像
在当前目录下执行以下命令构建 Elasticsearch Docker 镜像。
$ docker build -t docker-elasticsearch .
-t 指定构建出的 Docker 镜像名称,后面有一个点(.)表示 Dockerfile 文件在当前目录下。
运行 Elasticsearch 容器
使用以下命令运行 Docker 容器。
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -d docker-elasticsearch
其中,--name 参数表示指定 Docker 容器的名称,-p 参数表示端口映射,-d 参数表示后台启动。
在浏览器中访问 http://localhost:9200,若看到以下 JSON 数据,则表示 Elasticsearch 已经成功安装在 Docker 容器中。
// javascriptcn.com 代码示例 { "name" : "4cf4e3931383", "cluster_name" : "elasticsearch", "cluster_uuid": "jKzlI1JnR2imBFP1jGy2Qw", "version" : { "number" : "7.10.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "51e9d6f22758d0374e091ed2b49c0b1f08ea2e41", "build_date" : "2020-11-09T21:30:33.964949Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
示例代码
以上是安装 Elasticsearch 在 Docker 容器中的详细步骤,以下是示例代码。
Dockerfile 文件
// javascriptcn.com 代码示例 # Base Image FROM centos:7.8.2003 # Elasticsearch Version ARG VERSION=7.10.0 # Install Required Package RUN yum install -y mc wget which java-1.8.0-openjdk # Copy Elasticsearch File ADD ./elasticsearch-${VERSION}-linux-x86_64.tar.gz /opt # Set Environment Variables ENV ES_HOME /opt/elasticsearch-${VERSION} ENV PATH $PATH:$ES_HOME/bin ENV ES_JAVA_OPTS "-Xms512m -Xmx1024m" # Expose Port EXPOSE 9200 9300 # Start Elasticsearch CMD ["/opt/elasticsearch-${VERSION}/bin/elasticsearch"]
Docker 镜像构建命令
$ docker build -t docker-elasticsearch .
Docker 容器运行命令
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -d docker-elasticsearch
总结
Docker 是一种轻量级的虚拟化技术,可以帮助开发者将应用程序和依赖一起打包运行,简化了应用程序的部署和运维。Elasticsearch 是一个基于 Java 语言的分布式搜索引擎和数据分析引擎,被广泛应用于大数据领域。本文主要介绍了在 Docker 容器中安装 Elasticsearch 的详细步骤,供读者参考。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652a49e37d4982a6ebc9c59e