① docker啟動 es實例
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
特別注意:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ 測試環境下,設置ES的初始內存和最大內存,否則導致過大啟動不了ES
② docker ps 發現elasticsearch並沒有啟動
③ docker ps -a 發現es實例啟動的同時立馬退出了
④ 查看docker的elasticsearch啟動日志 docker logs es的ID 發現這里掛載宿主機是產生了異常
部署elasticsearch時需要把數據和日志掛載在宿主機上,防止docker容器意外宕機時,可以保證數據的安全和方便根據日志進行錯誤排查。
把docker容器中的/usr/share/elasticsearch/data掛載到宿主機的/mydata/elasticsearch/data下,日志同理。
但是看似很簡單的命令,卻報錯了java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes,看到這個錯誤的時候以為是容器中的/usr/share/elasticsearch/data/nodes目錄權限不夠,然后就開始各種授權,但是不行,折騰了半天時間,最后發現真正的原因是宿主機上的/mydata/elasticsearch/data目錄權限不足導致的!!!
但是錯誤日志報的卻是docker容器下的 /usr/share/elasticsearch/data/nodes目錄!!!
⑤ 修改宿主機(虛擬機)上掛載的文件夾權限 根據自己掛載文件夾的位置不同修改 如下同樣的方式修改三個文件夾的權限
方法二: 不推薦使用,因為以后很多地方文件夾所需的權限不同 這樣太豪橫了
⑥ 重啟elasticsearch 測試 docker start esID
⑦ 此時已經啟動成功