Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
使用Docker创建Elasticsearch服务
使用Docker创建Elasticsearch服务
08-16
Mark
860
最近正好需要测试使用elasticsearch,但是又不想污染主机环境,所以打算用docker安装下elasticsearch环境,这里做下简单的记录: 首先先分别了解下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 本机环境是centos7.0,所以直接使用sudo yum install docker安装即可。 #### 创建Docker 镜像 Elasticsearch官方在Docker Hub上已经有提供镜像,如果没有额外需求,执行下面这个命令就可以直接使用Elasticsearch官方提供的镜像: ``` docker run -d -p 9200:9200 --name="es" elasticsearch:2.3.5 ``` 但我还想额外装一个Elasticsearch的插件,方便调适,所以就自己做了一个镜像Dockerfile,内容如下: ``` # Version 0.1 # 基础镜像 FROM elasticsearch:2.3.5 # 镜像操作命令 RUN /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head \ && /usr/share/elasticsearch/bin/plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/2.3.5.0/elasticsearch-sql-2.3.5.0.zip # 指定端口 EXPOSE 9200 ``` 进入Dockerfile所在的文件夹,执行以下命令: ``` docker build -t markbest/es:1.0.1 . ``` 等命令执行完毕,然后执行 ``` docker images ``` 就能看到刚才创建的镜像了。 #### 启动容器及服务 上一步我们只是制作了一个Docker镜像,还没有创建Docker容器。关于Docker中镜像和容器的关系,可以类比为操作系统中的程序和进程,或者面向对象语言中的Class和Instance。我们必须从镜像创建出容器才能运行我们的服务(也就是Elasticsearch服务)。 第一次创建Docker容器,执行以下命令: ``` docker run -d -p 9200:9200 --name="es_markbest" markbest/es:1.0.1 ``` Elasticsearch的默认端口是9200,我们把宿主环境9200映射到Docker容器中的9200端口,这样我们就可以直接访问宿主环境的9200端口就可以访问到Docker容器中的Elasticsearch服务了,同时我们把这个容器命名为es_markbest。 如果一切顺利,访问 http://127.0.0.1:9200/_plugin/head/:  这样,我们就完成了用Docker提供Elasticsearch服务,而不污染宿主机环境了,这样还有一个好处,如果想同时启动多个不同版本的Elastcsearch或者其他服务,Docker也是一个理想的解决方案。 #### 把镜像push到DockerHub上 ``` docker login # 输入用户名和密码 docker push markbest/es:1.0.1 ``` push成功后在DockerHub中就能看到镜像了:  使用docker search即可搜索到我们push上去的镜像: ``` docker search markbest ``` 其他地方使用我们的镜像可以使用下面命令: ``` docker pull markbest/es:1.0.1 ```
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1798
Laravel带有条件搜索的分页
1696
Magento上传文件、缩略图和导出CSV
1694
Magento添加Advanced Dataflow
1644
Golang开发微信公众号
1573
Magento后台添加rule规则
1545
Magento优化 – MySQL读写分离
1510
Magento常用模块分享
1405
热门标签
下载
laravel分页
上传
导出
Dataflow
微信公众号
rule
规则
读写分离
模块
shell
正则
Collection
binlog
命名空间
处理
内存泄漏
Git
string
解锁
锁表
composer
事务处理
函数
redis sentinel
架构
系统
time
package
读写
事务处理
日志分析
进阶
缓存
golang
表分割
schedule
fmt
事务
分布式锁
交叉编译
HTTPS
日志分割
Gopher面试
Dockerfile
mongodb
channel
多数据库
git服务器
gogs
负载均衡
重载配置
日志过滤
php
protobuf
发展方向
版本号
模型关系
goroutine
concat
json
get
post
mongodb
defer
panic
golang算法
算法
docker
elasticsearch
代码部署
rpc
redis
主从配置
写文件
protobuf
laravel
websocket
package
并发
量级
生成插件
直接下载
curl
数据类型
Shell
错误传递
成长
grpc
参数
Go指针
队列
方法
protobuf
Redis持久化
路上
风景
yum