docker elasticsearch掛載宿主機報 java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes


① 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   

⑦ 此時已經啟動成功

 

 

 

 


免責聲明!

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



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