文章目录


前言

最近在学习elasticsearch时
在购买的阿里云linux服务器进行docker安装
运行时报错
在这里插入图片描述


解决方案

我这里是把

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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 

宿主机的/mydata/elasticsearch/config/elasticsearch.yml目录
挂载到容器的/usr/share/elasticsearch/config/elasticsearch.yml目录
相当于使用宿主机的配置文件 启动 elasticsearch

然后 docker ps 发现并未启动成功
docker logs 发现报错
Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes

原因是我们宿主机的目录权限没设置好
容器没有访问我们宿主机目录的权限

将我们本机这个目录下的所有权限赋给所有用户
让其容器能够访问到

777表示什么

因为文件的权限分为3种用户,分别为u(文件所有者)、g(文件的组用户)、o(其他用户),所以777表示u、g、o都是777的权限

chmod 777 test.txt:表示将test.txt文件的读、写、执行权限赋权给所有的用户



chmod 777 /usr/share/elasticsearch

接着重新docker start xx
docker ps

发现启动成功 在这里插入图片描述


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐