docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker启动容器错误

解决docker启动容器错误:docker:Error response from daemon:OCI runtime create failed

作者:阿亮_1024

这篇文章主要介绍了解决docker启动容器错误:docker:Error response from daemon:OCI runtime create failed问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

用于搜索引擎抓取

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting “/mydata/elasticsearch/config/elasticsearch.yml” to rootfs at “/usr/share/elasticsearch/config/elasticsearch.yml” caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

使用docker run 运行容器一直报这个错误,其实原因很简单,如果你英语好一点就能够很快解决而不至于像我一样百度半天找不到想要的答案。

翻译原因

报错信息的前半部分出现了两个路径“/mydata/elasticsearch/config/elasticsearch.yml”和“/usr/share/elasticsearch/config/elasticsearch.yml”,前一个是我外部主机上的路径,后一个是docker安装的es里面的地址。

我的错误就是因为,我在外部创建/mydata/elasticsearch/config/elasticsearch.yml时,把elasticsearch.yml创建成了一个目录,挂载不上,将外部的elasticsearch.yml改成文件即可。不知道提示这个错误原因有没有其它可能。

温馨提示,如果你之前使用docker run命令来根据镜像新建容器,但是报错了,然后根据我上面说的操作了,再次重新run还是会出问题,因为你之前,docker run虽然报错了,容器没有启动起来,但是容器已经新建了,可以用docker ps -a查看,这时有两种处理方式

后续连带错误

将上面的错误解决了之后,我使用docker run命令(已经删除了原来的容器),启动了es,如下所示

重新使用docker run

但是当我使用docker ps 查看时,并没有es,使用docker ps -a能看到刚刚创建的容器。

容器没有被启动

现在新问题变成了:使用docker run命令没有报错,但是容器并没有被启动。

我之前一直以为docker查看容器日志,只能查看已经启动的容器的日志,但是这次我发现,未启动状态的容器,也是能查看日志的。

使用命令:

docker logs 容器名

查看日志

哦豁,现在又有新问题了:

java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes。

这个路径提示的是 容器里面,也就是es内的路径,但其实不是。

问题是提示的这个路径所挂载的外部路径,权限不足。

我直接给最高权限777

在这里插入图片描述

OK,至此问题完美解决

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文