使用Docker创建Elasticsearch服务

最近需要做的几个功能都是基于Elasticsearch,但又不想污染系统环境,所以就花了些时间研究下如何使用Docker创建Elastcisearch服务。

首先先分别了解下Docker和Elasticssearch。

Docker是什么?

Docker是一个开源工具,能将一个WEB应用封装在一个轻量级,便携且独立的容器里,然后可以运行在几乎任何服务环境下。
Docker的容器能使应用跑在任何服务器上并且表现一致。一个开发者在笔记本上建立的一个容器,能跑在很多环境下,如:测试环境,生产环境,虚拟机上,VPS,OpenStack集群,公用的电脑等等
Docker的一般使用在以下几点:
• 自动化打包和部署应用
• 创造一个轻量级的,私人的 PAAS 环境
• 自动化测试和连续的 整合/部署
• 部署WEB应用,数据库和后端服务

所以,Docker是一个系统级兼容的容器,它采用Linux Container技术构建一个虚拟环境,用户可以在这个环境下安装各种应用来提供服务,并且这个环境可以随时创建或销毁,不会影响宿主环境

Elasticsearch是什么?

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
• 分布式的实时文件存储,每个字段都被索引并可被搜索
• 分布式的实时分析搜索引擎
• 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

总之,ES是一个牛逼的搜索存储引擎

安装Docker

Mac上安装Docker很简单,基本跟着官网的引导就可以顺利安装了,完成后确保Docker已启动,如下图

创建Docker 镜像

Elasticsearch官方在Docker Hub上已经有提供镜像,如果没有额外需求,执行下面这个命令就可以直接使用Elasticsearch官方提供的镜像:

docker run -d -p 9200:9200 --name="es" elasticsearch:2.3.5

但我还想额外装一个Elasticsearch的插件,方便调适,所以就自己做了一个镜像, Dockerfile

FROM elasticsearch:2.3.5

RUN /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

EXPOSE 9200

进入Dockerfile所在的文件夹,执行以下命令:

docker build --tag=es_ezio:2.3.5 .

然后执行

docker ps

就能看到刚才创建的镜像了

启动容器及服务

上一步我们只是制作了一个Docker镜像,还没有创建Docker容器。关于Docker中镜像和容器的关系,可以类比为操作系统中的程序和进程,或者面向对象语言中的Class和Instance。我们必须从镜像创建出容器才能运行我们的服务(也就是Elasticsearch服务)。

第一次创建Docker容器,执行以下命令:

docker run -d -p 9200:9200 --name="es_ezio" es_ezio:2.3.5

Elasticsearch的默认端口是9200,我们把宿主环境9200映射到Docker容器中的9200端口,这样我们就可以直接访问宿主环境的9200端口就可以访问到Docker容器中的Elasticsearch服务了,同时我们把这个容器命名为es_ezio。

如果一切顺利,访问 http://127.0.0.1:9200/_plugin/head/

这样,我们就完成了用Docker提供Elasticsearch服务,而不污染宿主机环境了,这样还有一个好处,如果想同时启动多个不同版本的Elastcsearch或者其他服务,Docker也是一个理想的解决方案。

总结

Docker主要是面向运维部署,但其实对开发人员来说也是一个不错的playground,后续我的个人服务会尽量都采用Docker的方式部署。
Elastic search是一个功能强大的搜索存储引擎,特别是它强大的全文搜索能力,要好好研究下。

时间: 2024-11-03 21:28:45

使用Docker创建Elasticsearch服务的相关文章

Docker网络和服务发现

本文讲的是Docker网络和服务发现[编者的话] 本文是<Docker网络和服务发现>一书的全文,作者是Michael Hausenblas.本文介绍了Docker世界中的网络和服务发现的工作原理,并提供了一系列解决方案. 前言 当你开始使用Docker构建应用的时候,对于Docker的能力和它带来的机会,你会感到很兴奋.它可以同时在开发环境和生产环境中运行,只需要将一切打包进一个Docker镜像中,然后通过Docker Hub分发镜像,这是很直接了当的.你会发现以下过程很令人满意:你可以快速

用Docker创建开发环境

本文讲的是用Docker创建开发环境,[编者的话]鉴于还没有用Docker创建本地开发环境的先例,Jeff Nickoloff开创了一个先例,相信大家也可以. 译者解释用Docker创建开发环境:作者在此处使用了Frankenstein一词.Frankenstein,<弗兰肯斯坦>原是英国诗人雪莱的妻子玛丽·雪莱在1818年创作的小说,被认为是世界第一部真正意义上的科幻小说.弗兰肯斯坦来自于此小说,可以理解为怪人;毁灭创造者自己之物 知道一个事物和实现这个事物是完全不同的事情.从Docker诞

使用Spring Cloud和Docker构建微服务

本文讲的是使用Spring Cloud和Docker构建微服务,[编者的话]这是系列博文中的第一篇,本文作者使用Spring Cloud和Docker构建微服务平台,文章的例子浅显易懂. 本系列博文主要向大家介绍如何使用Spring Cloud和Docker构建微服务平台. 什么是Spring Cloud? Spring Cloud 是Pivotal提供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Co

Spring Boot与Docker(二):使用Spring Boot和Docker构建微服务架构

本文讲的是Spring Boot与Docker(二):使用Spring Boot和Docker构建微服务架构,[编者的话]本篇是<使用Spring Boot和Docker构建微服务架构>系列的第二篇,本篇我们将会利用工具进行设置,深入探讨如何使用Docker工作,然后搭建我们的第一个容器.原文作者为3Pillar环球旗下美国Adbanced技术集团的总监Dan Greene,Dan有十八年的软件设计和开发经验,包括在电子商务.B2B集成.空间分析.SOA架构.大数据以及云计算等领域的软件产品架

如何规划基于Docker的微服务?

用微服务器替代整体应用程序,或者建立新的应用程序,是开发团队日益增长的考虑因素,这些开发团队希望提高敏捷性,迭代速度更快,并跟上市场变化.通过在不同团队之间提供更大的自主权,允许他们并行工作,在更短的时间内实现更多的功能,微服务器提供的代码不那么脆弱,从而更容易进行更改,测试和更新. Docker容器适合微服务,因为它们具有自主性,自动化和便携性.具体来说,Docker以其封装特定应用程序组件及其所有依赖关系的能力而闻名,从而使团队能够独立工作,而无需底层基础架构或底层基础来支持其正在使用的每一

Docker 在 Uber 服务部署中的应用

本文讲的是Docker 在 Uber 服务部署中的应用,[编者的话]快速创新的迫切要求,使得 Uber 开始在服务部署中应用 Docker .这篇文章讲述了部署方式的转变过程,强调在全面容器化之前,必须做充足的准备. 无论你对 Uber 的看法如何, Uber 无疑是创新的同义词,因为它在颠覆交通行业的同时引领了共享经济.像Uber 这样的最快创新者,就像 Microsoft, Apple 和 Amazon 公司一样,都面临一个问题:一旦你开始创新并且取得成功,你不得不一直保持这样快的创新速度,

Cisco对于Docker和微服务的看法

本文讲的是Cisco对于Docker和微服务的看法,[编者的话]本文主要讲述Docker和微服务的发展,以及Cisco对于Docker和微服务的看法.最后还提到了Docker的libnetwork,以及Cisco的开源项目Contiv,Contiv是一种通用型网络插件,用来处理多主机系统容器集群网络的使用. @Container容器技术大会将于2016年1月24日在北京举行,来自爱奇艺.微博.腾讯.去哪儿网.美团云.京东.蘑菇街.惠普.暴走漫画等知名公司的技术负责人将分享他们的容器应用案例. 在

再谈Docker,微服务的场景化应用

看过<超能陆战队>的朋友可能仍然对于电影中的男主角介绍和演示自己发明的微型机器人的场景记忆犹新. "它"看起来只是一跟带有磁性的小小的金属部件.但是它是一个独立的个体,自己能够独立的大脑,同时,和同伴之间有相互的接口你行链接.能够通讯.能够随意的组合成任意功能的物体. 通过类比,我们很容易由硬件领域想到软件领域.譬如软件系统的架构,一直都是伴随着几种主流的模式,集中式,分布式以及最近才开始流行起来的"微服务". 滨田宏发明的微型机器人,其实和微服务的思想

Docker创建和发展的环境与原因

[编者按]时至今日,Docker的谈论已随处可见,这个极具人气的开源项目让人们可以使用软件容器自动化应用程序的部署过程,受众多IT巨头喜爱.近日,Luke Lefler在The New Stack上总结了Docker之父Solomon Hykes的主题演讲,描述了Docker创建的原因和环境. 以下为译文 在New Relic的FutureStack14 Conference会议上,Docker之父兼Docker公司CTO Solomon Hykes的主题演讲总结了Docker创建和发展的环境与