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


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

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

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

  • 系列教程丨用 Docker 探索开源软件 —— Redis
  • 系列教程丨用 Docker 探索开源软件 —— PostgreSQL(一)
  • 系列教程丨用 Docker 探索开源软件 —— PostgreSQL(二)

启动一个运行 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.1container_name: elasticsearchenvironment:- cluster.name=docker-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- esdata1:/usr/share/elasticsearch/dataports:- 9200:9200networks:- esnetelasticsearch2:image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1container_name: elasticsearch2environment:- cluster.name=docker-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"- "discovery.zen.ping.unicast.hosts=elasticsearch"ulimits:memlock:soft: -1hard: -1volumes:- esdata2:/usr/share/elasticsearch/datanetworks:- esnetvolumes:esdata1:driver: localesdata2:driver: localnetworks: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

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

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

    出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五,与您不见不散! Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它.如果您 ...

  2. 【Docker系列教程之三】Docker容器是如何工作的

    在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下  ...

  3. 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)

    文章目录 系列教程总目录 概述 10.1 软件定时器的特性 10.2 软件定时器的上下文 10.2.1 守护任务 10.2.2 守护任务的调度 10.2.3 回调函数 10.3 软件定时器的函数 10 ...

  4. 【CCS仿真系列教程】手把手教你纯软件仿真实现音频滤波

    [CCS仿真系列教程]手把手教你纯软件仿真实现音频滤波 事先说明 示例项目下载 示例使用说明 首先用Matlab生成加了噪声的音频 将我的项目弄你的CCS的WorkSpace中 把Matlab生成后的 ...

  5. 【Docker系列教程之一】docker入门

    我们在理解 docker 之前,首先我们得先区分清楚两个概念,容器和虚拟机. 我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系 ...

  6. Docker系列教程09-使用Docker Hub管理镜像

    为什么80%的码农都做不了架构师?>>>    > 原文:<http://www.itmuch.com/docker/09-docker-docker-hub/> ...

  7. Docker系列教程20-安装Docker Compose

    为什么80%的码农都做不了架构师?>>>    原文:http://www.itmuch.com/docker/20-docker-compose-install/ ,转载请说明出处 ...

  8. OMV搭建系列教程[0] – 最小化安装Debian11

    OMV搭建系列教程[1] – Debian9安装OpenMediaVault OMV搭建系列教程[2] – 安装omv-extras OMV搭建系列教程[3] – 共享文件夹SMB设置 OMV搭建系列 ...

  9. 软件协会发布开源软件与商业软件知识产权报告

        日前,中国软件行业协会发布了<有关开放源代码软件与商业软件知识产权的研究报告>(以下简称<研究报告>),明确提出"反对政府直接支持或干预任何形式的软件商业模式 ...

  10. 干货 :建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

最新文章

  1. 2022-2028年中国二次供水设备行业研究及前瞻分析报告
  2. 设计模式模式游客(Visitor)摘录
  3. CMB中相关仪器设备和术语
  4. 用Python玩转微信的正确姿势!
  5. C语言指针作为函数返回值
  6. Delphi中TFlowPanel实现滚动条效果
  7. video自动全屏播放
  8. osgi框架和spring区别_BATJ面试必会之 Spring 篇(二)
  9. linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...
  10. 华为豪投20亿!3年培养100万AI人才,网友不服!
  11. Django之ORM字段和参数
  12. make: 'pcs.o' is up to date.问题解决
  13. JVM监控及诊断工具命令行篇之jhat
  14. 盘点年度最佳10大顶级绘图软件,满足你99%的图表需求,赶紧收藏
  15. 形式验证——学习笔记
  16. Android中一个app启动另一个app的指定activity
  17. ASA广告投放策略:建立、更新你的关键词库
  18. 有哪些手机赚钱的副业?
  19. NOIP2014、2015普及组初赛难点整理
  20. QuartusII绑定引脚时出现错误:Error: Can‘t place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)

热门文章

  1. 数据结构代码学习笔记(持续更新中)
  2. Ubuntu 文件文件夹查看权限和设置权限
  3. Spark系列(三)SparkContext分析
  4. tpc的time-wait
  5. CentOS 7 配置DHCP服务器
  6. Zabbix实现自动发现端口并监控
  7. AtCoder Beginner Contest 083
  8. SDL如何嵌入到QT中?!
  9. linux 配置ssh免密码登陆本机
  10. DB2 9 根本(730 磨练)认证指南,第 3 部门: 谋面 DB2 数据(4)