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 rm 容器id,刪除之前建的容器,然后在重新run
  • 使用命令 docker start 容器id,啟動你之前run報錯建的容器。

后續連帶錯誤

將上面的錯誤解決了之后,我使用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,至此問題完美解決

轉自:www.dianjilingqu.com


免責聲明!

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



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