一、Docker是什么?
Docker是一個(gè)開源工具,能將一個(gè)WEB應(yīng)用封裝在一個(gè)輕量級(jí),便攜且獨(dú)立的容器里,然后可以運(yùn)行在幾乎任何服務(wù)環(huán)境下。
Docker的容器能使應(yīng)用跑在任何服務(wù)器上并且表現(xiàn)一致。一個(gè)開發(fā)者在筆記本上建立的一個(gè)容器,能跑在很多環(huán)境下,如:測(cè)試環(huán)境,生產(chǎn)環(huán)境,虛擬機(jī)上,VPS,OpenStack集群,公用的電腦等等
Docker的一般使用在以下幾點(diǎn):
- 自動(dòng)化打包和部署應(yīng)用
- 創(chuàng)造一個(gè)輕量級(jí)的,私人的 PAAS 環(huán)境
- 自動(dòng)化測(cè)試和連續(xù)的 整合/部署
- 部署WEB應(yīng)用,數(shù)據(jù)庫(kù)和后端服務(wù)
所以,Docker是一個(gè)系統(tǒng)級(jí)兼容的容器,它采用Linux Container技術(shù)構(gòu)建一個(gè)虛擬環(huán)境,用戶可以在這個(gè)環(huán)境下安裝各種應(yīng)用來(lái)提供服務(wù),并且這個(gè)環(huán)境可以隨時(shí)創(chuàng)建或銷毀,不會(huì)影響宿主環(huán)境。
二、Elasticsearch是什么?
Elasticsearch也使用Java開發(fā)并使用Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
不過(guò),Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:
- 分布式的實(shí)時(shí)文件存儲(chǔ),每個(gè)字段都被索引并可被搜索
- 分布式的實(shí)時(shí)分析搜索引擎
- 可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)
總之,ES是一個(gè)牛逼的搜索存儲(chǔ)引擎。
三、創(chuàng)建Docker 鏡像
Elasticsearch官方在Docker Hub上已經(jīng)有提供鏡像,如果沒(méi)有額外需求,執(zhí)行下面這個(gè)命令就可以直接使用Elasticsearch官方提供的鏡像:
docker run -d -p 9200:9200 –name=”es” elasticsearch:2.3.5
要額外裝一個(gè)Elasticsearch的head插件,方便調(diào)試,做了一個(gè)鏡像,Dockerfile
FROM elasticsearch:2.3.5
RUN /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
EXPOSE 9200
進(jìn)入Dockerfile所在的文件夾,執(zhí)行以下命令:
docker build –tag=es_ezio:2.3.5 .
然后執(zhí)行docker images 就能看到剛才創(chuàng)建的鏡像了
# 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
四、啟動(dòng)容器及服務(wù)
上一步我們只是制作了一個(gè)Docker鏡像,還沒(méi)有創(chuàng)建Docker容器。關(guān)于Docker中鏡像和容器的關(guān)系,可以類比為操作系統(tǒng)中的程序和進(jìn)程,或者面向?qū)ο笳Z(yǔ)言中的Class和Instance。我們必須從鏡像創(chuàng)建出容器才能運(yùn)行我們的服務(wù)(也就是Elasticsearch服務(wù))。
第一次創(chuàng)建Docker容器,執(zhí)行以下命令:
docker run -d -p 9200:9200 –name=”es_ezio” es_ezio:2.3.5
Elasticsearch的默認(rèn)端口是9200,我們把宿主環(huán)境9200映射到Docker容器中的9200端口,這樣我們就可以直接訪問(wèn)宿主環(huán)境的9200端口就可以訪問(wèn)到Docker容器中的Elasticsearch服務(wù)了,同時(shí)我們把這個(gè)容器命名為es_ezio。
如果一切順利,訪問(wèn) http://127.0.0.1:9200/_plugin/head/
這樣,我們就完成了用Docker提供Elasticsearch服務(wù),而不污染宿主機(jī)環(huán)境了,這樣還有一個(gè)好處,如果想同時(shí)啟動(dòng)多個(gè)不同版本的Elastcsearch或者其他服務(wù),Docker也是一個(gè)理想的解決方案。
更多Docker相關(guān)教程見以下內(nèi)容:
Linux 下的 Docker 安裝與使用 http://www.sfodin.cn/Linux/2018-06/152996.htm
CentOS 7安裝Docker應(yīng)用容器引擎 http://www.sfodin.cn/Linux/2018-06/152856.htm
CentOS 7.3環(huán)境安裝Docker 18.03 http://www.sfodin.cn/Linux/2018-05/152356.htm
使用Docker分分鐘啟動(dòng)常用應(yīng)用 http://www.sfodin.cn/Linux/2017-04/142649.htm
CentOS 7使用Docker搭建GitLab服務(wù)器 http://www.sfodin.cn/Linux/2018-04/151725.htm
30分鐘帶你了解Docker http://www.sfodin.cn/Linux/2018-08/153346.htm
Docker容器常見操作詳解 http://www.sfodin.cn/Linux/2018-08/153685.htm
Docker發(fā)布應(yīng)用程序指南 http://www.sfodin.cn/Linux/2018-08/153405.htm