Docker 安裝 ElasticSearch 及失敗解決方法[Ubuntu 20.04]


1. 下載 ElasticSearch

最開始使用docker search命令搜索后,就直接使用docker pull命令拉取鏡像,但沒想到拉取失敗,后來到官網看了看,原來沒有標簽為lasted的鏡像,所以,正確的拉取方法應該是: docker pull elasticsearch:tag

拉取ElasticSearch

2. 運行 ElasticSearch

2.1 失敗的啟動

事先說明一下,ElasticSearch啟動時默認使用2GB的內存,為了防止內存占用過大,一般都限制了它的運行內存,如下命令設置為256MB。

然后我很自信滿滿的運行了下面的命令,其中-d表示后台運行,-p 9200:9200是進行端口映射,--name ES01是指定容器的名稱,7.14.0是版本號。9200端口用於Web通信,9300用於分布式下各節點間的通信。

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
--name ES01 elasticsearch:7.14.0

錯誤的運行

然后使用docker ps -a查詢了一下運行情況,確實在運行,但是使用瀏覽器訪問http://localhost:9200卻一直失敗,重新查詢運行情況,居然退出了。

容器退出了

2.2 查找解決方法

之后使用docker logs 容器ID或容器名稱查詢容器啟動的日志,一行行查找,終於找到了錯誤原因:

錯誤原因

  • 第一個是vm.max_map_count的值太低,需要重新設置。
  • 第二個是配置中至少需要設置 [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]中的一個。

2.2.1 設置vm.max_map_count

設置方法: sysctl -w vm.max_map_count=262144

修改屬性值

2.2.2 配置文件

說實話,Docker是最近才學的,至於容器的配置文件放在哪個位置還真不清楚,然后在網上查詢也沒找到結果,但是網上的教程提供了路徑,就是: /usr/share/elasticsearch/config/elasticsearch.yml,但實際上還是找不到,后來想了想,可能需要進入容器的運行環境中才行。

於是啟動容器,但是不到一分鍾,容器就因為Bug沒解決,無法一直運行,於是我先把命令先敲一遍,然后進入容器后直接粘貼,看看這配置文件寫了啥。

  • 先啟動容器。
    • docker start ES01
    • ES01是容器的名稱。
  • 進入容器
    • docker exec -it ES01 /bin/bash
  • 查看配置文件信息
    • cat /usr/share/elasticsearch/config/elasticsearch.yml
  • 搞定!原來就寫了兩個內容,雖然不是很懂。
cluster.name: "docker-cluster"
network.host: 0.0.0.0

查看配置文件內容

知道了配置文件的內容,我就可以自定義一份配置信息,然后讓容器啟動時按照我的配置文件來執行就可以了,下面是我的配置信息。

cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

2.3 成功的啟動

啟動前先把之前的容器刪除,反正留着也用不了。刪除命令是docker rm ES01

這次啟動容器,讓它帶着我自定義的配置文件來啟動,啟動命令有點長,不過就多了一個配置信息,還是能看懂的。

docker run -v ~/config/elasticsearch/es7140.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
--name ES01 elasticsearch:7.14.0

其中,~/config/elasticsearch/es7140.yml是我自定義配置信息的路徑。

成功啟動

這次算是真正的啟動了,瀏覽器也可以訪問了,不過瀏覽器訪問至少要等個30秒,等容器啟動之后才能真正訪問到。

瀏覽器訪問


參考資料


免責聲明!

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



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