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

docker容器啓動命令:

docker run -itd --name es -p 9200:9200 -p 9300:9300 -v /data0/elasticsearch/data/:/usr/share/elasticsearch/data -v /data0/elasticsearch/logs/:/usr/share/elasticsearch/logs -e "discovery.type=single-node" 39.98.93.235:5000/my-es

部署elasticsearch時需要把數據和日誌掛載在宿主機上,防止docker容器意外宕機時,可以保證數據的安全和方便根據日誌進行錯誤排查。

把docker容器中的/usr/share/elasticsearch/data掛載到宿主機的/data0/elasticsearch/data下,日誌同理。

但是看似很簡單的命令,卻報錯了java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes,看到這個錯誤的時候以爲是容器中的/usr/share/elasticsearch/data/nodes目錄權限不夠,然後就開始各種授權,但是不行,折騰了半天時間,最後發現真正的原因是宿主機上的/data0/elasticsearch/data目錄權限不足導致的!!!但是錯誤日誌報的卻是docker容器下的 /usr/share/elasticsearch/data/nodes目錄,哎 浪費了大半天,仔細想想 把這2個文件綁定一起了,宿主機權限不足導致無法寫入,影響到docker容器也無法正常寫入,遇到問題還是要多思考啊!

具體解決方案很簡單,就是給/usr/share/elasticsearch/data這個命令授權,日誌文件目錄同理。

chmod 777 /usr/share/elasticsearch/data

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章