使用Docker創建Elasticsearch服務


一、Docker是什么?

Docker是一個開源工具,能將一個WEB應用封裝在一個輕量級,便攜且獨立的容器里,然后可以運行在幾乎任何服務環境下。
Docker的容器能使應用跑在任何服務器上並且表現一致。一個開發者在筆記本上建立的一個容器,能跑在很多環境下,如:測試環境,生產環境,虛擬機上,VPS,OpenStack集群,公用的電腦等等
Docker的一般使用在以下幾點:
• 自動化打包和部署應用
• 創造一個輕量級的,私人的 PAAS 環境
• 自動化測試和連續的 整合/部署
• 部署WEB應用,數據庫和后端服務

所以,Docker是一個系統級兼容的容器,它采用Linux Container技術構建一個虛擬環境,用戶可以在這個環境下安裝各種應用來提供服務,並且這個環境可以隨時創建或銷毀,不會影響宿主環境。

二、Elasticsearch是什么?

Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。

不過,Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:
• 分布式的實時文件存儲,每個字段都被索引並可被搜索
• 分布式的實時分析搜索引擎
• 可以擴展到上百台服務器,處理PB級結構化或非結構化數據

總之,ES是一個牛逼的搜索存儲引擎。

三、創建Docker 鏡像

Elasticsearch官方在Docker Hub上已經有提供鏡像,如果沒有額外需求,執行下面這個命令就可以直接使用Elasticsearch官方提供的鏡像:

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

要額外裝一個Elasticsearch的head插件,方便調試,做了一個鏡像,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 images 就能看到剛才創建的鏡像了

# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
es_ezio                     2.3.5               d66c3f2ed24f        About an hour ago   348.8 MB
docker.io/elasticsearch     2.3.5               1c3e7681c53c        17 months ago       346.4 MB

四、啟動容器及服務

上一步我們只是制作了一個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創建Elasticsearch服務

Docker安裝ElasticSearch

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM