Docker挂载目录失败问题解决方法
GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!
【 如果你想靠AI翻身,你先需要一个靠谱的工具! 】
一、问题背景
运行镜像生成容器时挂载目录失败
执行的命令如下
1 | sudo docker run - -name tomcat -libai -it -p 8099:8080 -d -v /tomcat -libai /tomcat:/usr/local/tomcat tomcat:latest |
为了方便看我们使用\
换行
1 2 3 4 5 6 7 | sudo docker run \ - -name tomcat -libai \ -it \ -p 8099:8080 \ -d \ -v /tomcat -libai /tomcat:/usr/local/tomcat \ tomcat:latest |
执行命令后报错如下
报错代码复制过来完整看一遍
1 2 3 4 | docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "catalina.sh" : executable file not found in $PATH : unknown. |
大致意思就是因为文件不能找到指定的变量路径导致创建失败(不知翻的对不对勿cue =_ =)
以下解决方案内容均为个人理解和尝试,如果不适用请参考别的文章。
二、解决方案
1. 解决方案一
使用命令查看镜像交互路径
发现交互路径为/bin/sh
在使用镜像运行容器挂载时,命令最后加上这个交互路径,如下
1 | sudo docker run - -name tomcat -libai -it -p 8099:8080 -d -v /tomcat -libai /tomcat:/usr/local/tomcat tomcat:latest /bin/sh |
使用换行符更方便看,如下
1 2 3 4 5 6 7 8 | sudo docker run \ - -name tomcat -libai \ -it \ -p 8099:8080 \ -d \ -v /tomcat -libai /tomcat:/usr/local/tomcat \ tomcat:latest \ /bin/sh |
运行后返回容器ID,无报错
此方法可以挂载成功
此方法有个问题,就是挂载成功后,容器中Tomcat目录中啥也没有,可能是将宿主机的空目录同步到容器,就变成了空的,也就是说,挂载目录前这个目录不能有东西,不然会自动以宿主机空目录为准
2. 解决方案二
问题分析:
首先想一下,宿主机中的目录和容器中的目录挂载,那么最初的挂载如果两边目录都有文件或目录,且内容不同,挂载后会是什么样的结果呢?是宿主机中的目录中出现容器目录的内容?还是容器目录中出现了宿主机的内容?亦或是两边目录中都出现了对方的内容?
答案我并没有去验证,但我用宿主机的一个空目录去挂载tomcat容器的tomcat目录,出现了都为空的现象。大家都知道tomcat中是有文件目录和文件的,且webapps这个文件夹是大家熟知的。但是宿主机中tomcat文件夹中确实空的。
所以我们以挂载Tomcat目录为例,挂载目录选择子文件夹或创建新的子文件夹,如webapps,尽量不要使用主目录也就是最顶层的目录来挂载,执行命令
1 | sudo docker - -name tomcat -libai -it -p 8099:8080 -d -v /tomcat -libai /tomcat/webapps:/usr/local/tomcat/webapps tomcat:latest |
换行表示
1 2 3 4 5 6 7 | sudo docker run \ - -name tomcat -libai \ -it \ -p 8099:8080 \ -d \ -v /tomcat -libai /tomcat/webapps:/usr/local/tomcat/webapps \ tomcat:latest |
可正常挂载,且不用使用类似/bin/sh的镜像交互命令
总结
到此这篇关于Docker挂载目录失败问题解决方法的文章就介绍到这了,更多相关Docker挂载目录失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Docker安装redis并且设置密码,以及进入容器修改密码方式
这篇文章主要介绍了Docker安装redis并且设置密码,以及进入容器修改密码方式,2024-01-01关于Jenkins + Docker + ASP.NET Core自动化部署的问题(避免踩坑)
这篇文章主要介绍了关于Jenkins + Docker + ASP.NET Core自动化部署的问题,本文给大家带来了docker安装方法及一些注意事项,内容有点小长,希望朋友们耐心看完,一定有收获2021-05-05
最新评论