本篇主要講解使用Docker如何部署ElasticSearch:6.8.4 版本,講解了從Docker拉取到最終運行ElasticSearch 以及 安裝 ElasticSearch-Head 用來管理ElasticSearch相關信息的一個小工具,本博客系統首頁的搜索正是使用了ElasticSearch來實現的,因爲ElasticSearch 更新太快 以致於SpringData-ElasticSearch都跟不上 Es的更新 我也是一開始下載8.x的版本 致使SpringData-ElasticSearch 報錯 最終我選擇了6.8.4 在此記錄一下node
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.8.4
ElasticSearch的默認端口是9200,咱們把宿主環境9200端口映射到Docker容器中的9200端口,就能夠訪問到Docker容器中的ElasticSearch服務了,同時咱們把這個容器命名爲es。docker
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms=256m -Xms=256m" docker.elastic.co/elasticsearch/elasticsearch:6.8.4
說明: -e discovery.type=single-node :表示單節點啓動 -e ES_JAVA_OPTS="-Xms=256m -Xms=256m" :表示設置es啓動的內存大小,這個真的要設置,否則後時候會內存不夠,好比我本身的辣雞服務器!後端
centos下載完elasticsearch並修改完配置後運行docker命令:centos
發現沒有啓動成功,去除命令的-d後打印錯誤以下跨域
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=’Cannot allocate memory’ (errno=12)
通過一番查找發現這是因爲elasticsearch6.0默認分配jvm空間大小爲2g,內存不足以分配致使。瀏覽器
解決方法就是修改jvm空間分配 運行命令:bash
find /var/lib/docker/overlay/ -name jvm.options 查找jvm.options文件,找到後進入使用vi命令打開jvm.options以下: 將 -Xms2g -Xmx2g 修改成 -Xms512m -Xmx512m
保存退出便可。再次運行建立運行elasticsearch命令,成功啓動。服務器
docker pull mobz/elasticsearch-head:5
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
docker start elasticsearch-head
發現鏈接不上,是由於有跨域問題,由於先後端分離開發的因此須要設置一下escors
docker exec -it es /bin/bash
vi config/elasticsearch.yml 添加 http.cors.enabled: true http.cors.allow-origin: "*"
其實就是SpringBoot的yml文件 添加跨域支持前後端分離
exit docker restart es
本篇只是簡單的講解了如何用Docker安裝ElasticSearch 而且會遇到的坑,包括內存不足,或者版本過高等問題,以及ElasticSearch-Heard的安裝和跨域的配置 ,下一篇將講解ElasticSearch如何安裝中文分詞器
我的博客系統:https://www.askajohnny.com 歡迎訪問! 本文由博客一文多發平臺 OpenWrite 發佈!