当前位置: 代码迷 >> 综合 >> 根据配置文件启动elasticsearch报错error creating overlay mount to...init/merged: no such file ordirectory
  详细解决方案

根据配置文件启动elasticsearch报错error creating overlay mount to...init/merged: no such file ordirectory

热度:87   发布时间:2024-02-20 16:14:12.0

事情是这样的,我是采用elascticsearch.yml配置文件+elasticsearch:7.5.0镜像的方式来启动elasticsearch服务的,我的elasticsearch.yml的配置文件如下图所示:
在这里插入图片描述
我也下载安装了elasticsearch:7.5.0的镜像资源,然后我打算通过以下命令启动elastcisearch容器进而启动es服务,

docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d \
-p 9200:9200 -p 9300:9300 \
-v /data/es/config/es.yml:/data/share/elasticsearch/config/elasticsearch.yml \
-v /data/es/data:/data/share/elasticsearch/data \
--name ES \
elasticsearch:7.5.0

就在这个时候错误发生了,
在这里插入图片描述
报错:具体的报错信息就是:docker: Error response from daemon: error creating overlay mount to /data/docker/overlay2/4990314e174cb3d6cd0d51af63da5bacab46c8f77c7dcc23ee782bf323c6ae4f-init/merged: no such file or directory.
原因:可能是因为之前安装elasticsearch失败了,然后我在卸载es的时候,使用find / -name elasticsearch.yml查找了下/data/docker/overlay2/下的容器文件,然后把与es有关的容器文件删除了,然而这其中可能包含了es的相关配置文件(有的es容器文件应该是下载elasticsearch:7.5.0镜像的时候一块儿被下载或者被加载成为docker容器文件的)。有的与es有关的容器文件是不能删除的(因为有的容器文件可能包含与es镜像有关的配置文件),此外,也是没有必要删除这些与es相关的容器文件的,因为使用docker stop ESdocker rmi ES -f删除es容器的时候很多与es相关的容器文件就自动删除了,所以没有必要自己手动删除es相关的容器文件。
解决方案:1、卸载本地docker仓库中的es镜像(elasticsearch:7.5.0),重新下载elasticsearch:7.5.0镜像,这样的话一些缺失的es容器文件会自动加载进来。(这种方法之前是有效的,我自己也是成功过的,但是不知道为什么之后就没有作用了)
2、卸载本地docker仓库中的es镜像(elasticsearch:7.5.0),重新下载elasticsearch:7.6.0镜像,即更换了一个镜像版本。这个时候启动es服务的命令也要稍作修改:

docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d \
-p 9200:9200 -p 9300:9300 \
-v /data/es/config/es.yml:/data/share/elasticsearch/config/elasticsearch.yml \
-v /data/es/data:/data/share/elasticsearch/data \
--name ES \
elasticsearch:7.6.0

通过这两种解决方案,这个问题应该就能够处理解决了。


说明:不要使用docker pull elasticsearch:7.5.0命令拉取镜像,因为有的时候这个镜像的下载速度太慢,我推荐大家下载拉取国内镜像源下的es镜像,命令为docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.0

  相关解决方案