系列教程丨用 Docker 探索开源软件 —— Elasticsearch(一)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们,因为容器封装了所有依赖项,并在删除时可以不留下任何痕迹。今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。

注:为了理解本教程中的命令,我建议您使用 Play with Docker,它可以让您在浏览器中运行文章中涉及到的所有命令。

点击下列文章标题,回顾本系列文章的往期内容:


启动一个运行 Elasticsearch 的新容器

如果您只想尝试在单节点中运行 Elasticsearch,那么我们可以使用下面所示的“docker run”命令来实现。

我们公开了 9200 端口(用于 REST API),并使用官方的 elasticsearch 6.4.2 镜像(点击文尾处“阅读原文”下载该镜像)设置单节点集群(使用环境变量)。我还将展示如何使用 volume 来存储索引数据。

docker run -d -p 9200:9200 -e "discovery.type=single-node" \
-v esdata:/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:6.4.2

我们用“curl”运行的所有 Elasticsearch 命令在这个容器上都可以正常工作。但是对于本教程,我将使用“docker-compose”来创建集群。


使用 Docker Compose 创建 Elasticsearch 集群

使用docker-compose,我们可以以YAML格式声明构成应用程序的所有容器。对于每个容器来说,我们还可以配置其应该设置的环境变量、所需的任何 volume 以及定义允许服务相互通信的网络。

如下所示,这是 docker-compose.yml 文件的第一个版本。它定义了一个简单的双节点集群,集群中的每个节点都有一个 volume,这样我们的索引就可以独立于容器而存在,并且可以在升级后继续存在(稍后我们将进行升级)。请注意,我们正在使用的是 Elasticsearch 6.4.1版本。

version: '2.2'
services:
 elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
   container_name: elasticsearch
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata1:/usr/share/elasticsearch/data
   ports:
     - 9200:9200
   networks:
     - esnet
 elasticsearch2:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
   container_name: elasticsearch2
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata2:/usr/share/elasticsearch/data
   networks:
     - esnet
 
volumes:
 esdata1:
   driver: local
 esdata2:
   driver: local
 
networks:
 esnet:

要在本地下载该 compose 文件作为 docker-compose-v1.yml,您可以使用以下命令:

curl https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/c4fa64575bc854e34a2506291bd14033caf5e9b6/docker-compose-v1.yml > docker-compose-v1.yml

现在我们可以使用“docker-compose up”命令启动容器,并创建所有必要的资源,如网络和 volume。 我们使用“-d”让其在后台运行,就像我们使用“docker run”一样:

docker-compose -f docker-compose-v1.yml up -d

检查群集运行状况

我们在其中一个容器上公开了 9200 端口,允许我们使用以下请求来查询集群运行状况:

curl http://localhost:9200/_cluster/health?pretty
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
Docker 索引 容器
系列教程丨用 Docker 探索开源软件 —— Elasticsearch(三)
今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。
1844 0
|
数据格式 Docker 索引
系列教程丨用 Docker 探索开源软件 —— Elasticsearch(二)
今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。
10639 0
|
存储 关系型数据库 数据库
系列教程丨用 Docker 探索开源软件 —— PostgreSQL(二)
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们......
2292 0
|
存储 Shell 数据库
系列教程丨用 Docker 探索开源软件 —— PostgreSQL(一)
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们......
2386 0
|
NoSQL Shell Redis
系列教程丨用 Docker 探索开源软件 —— Redis
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们,因为容器封装了所有依赖项......
2165 0
|
Web App开发 监控 关系型数据库
Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏
云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring Boot 实践。
2776 0
|
21天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
34 2
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
1天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
7 0
|
10天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
12 0