当前位置: 首页 > news >正文

Docker挂载目录失败问题解决

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

Docker挂载目录失败问题解决

  • 问题背景
  • 解决方案一
  • 解决方案二


问题背景

运行镜像生成容器时挂载目录失败
执行的命令如下

sudo docker run --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat:/usr/local/tomcat tomcat:latest

为了方便看我们使用\换行

sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat:/usr/local/tomcat \
tomcat:latest

执行命令后报错如下
在这里插入图片描述
报错代码复制过来完整看一遍

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 =_ =)

以下解决方案内容均为个人理解和尝试,如果不适用请参考别的文章。

解决方案一

使用命令查看镜像交互路径

sudo docker history tomcat

在这里插入图片描述
发现交互路径为/bin/sh
在使用镜像运行容器挂载时,命令最后加上这个交互路径,如下

sudo docker run --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat:/usr/local/tomcat tomcat:latest /bin/sh

使用换行符更方便看,如下

sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat:/usr/local/tomcat \
tomcat:latest \
/bin/sh

运行后返回容器ID,无报错
在这里插入图片描述
此方法可以挂载成功
此方法有个问题,就是挂载成功后,容器中Tomcat目录中啥也没有,可能是将宿主机的空目录同步到容器,就变成了空的,也就是说,挂载目录前这个目录不能有东西,不然会自动以宿主机空目录为准

解决方案二

问题分析:
首先想一下,宿主机中的目录和容器中的目录挂载,那么最初的挂载如果两边目录都有文件或目录,且内容不同,挂载后会是什么样的结果呢?是宿主机中的目录中出现容器目录的内容?还是容器目录中出现了宿主机的内容?亦或是两边目录中都出现了对方的内容?
答案我并没有去验证,但我用宿主机的一个空目录去挂载tomcat容器的tomcat目录,出现了都为空的现象。大家都知道tomcat中是有文件目录和文件的,且webapps这个文件夹是大家熟知的。但是宿主机中tomcat文件夹中确实空的。

所以我们以挂载Tomcat目录为例,挂载目录选择子文件夹或创建新的子文件夹,如webapps,尽量不要使用主目录也就是最顶层的目录来挂载,执行命令

sudo docker --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat/webapps:/usr/local/tomcat/webapps tomcat:latest

换行表示

sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:latest

可正常挂载,且不用使用类似/bin/sh的镜像交互命令
在这里插入图片描述


http://www.lryc.cn/news/101135.html

相关文章:

  • css中隐藏页面中某一个元素有什么方法?
  • Unity 多语言问题C#篇
  • 深度学习和神经网络
  • 在CSDN学Golang云原生(Kubernetes Volume)
  • 第十五章 友元 异常和其他
  • 制作DBC文件
  • 【1.1】Java微服务:初识微服务
  • 数据结构--串、数组、广义表
  • 白银挑战——链表高频面试算法题
  • 海外腾讯云账号:腾讯云高性能计算平台 THPC
  • eclipse 最新版没有navigator视图如何解决
  • Zynq-Linux移植学习笔记之62- PL挂载复旦微flash
  • SpringBoot复习:(2)Tomcat容器是怎么启动的?
  • 1 MobileHomeTopicApplication
  • mpi4py包安装报错
  • C语言进阶-1
  • Python如何正确解决爬虫过程中的Cookie失效问题?
  • 维护自己电脑浅析
  • svo2论文
  • 【GoLang】MAC安装Go语言环境
  • epoll服务器创建
  • jdk11环境 提示“因为 accessExternalDTD 属性设置的限制导致不允许 ‘http‘ 访问“bug
  • Android Studio 的版本控制Git
  • 一个 SpringBoot 项目能处理多少请求
  • Python中的r字符串前缀及其用法详解
  • LabVIEW实现三相异步电机磁通模型
  • 读书会-《影响力》
  • 141. 环形链表
  • 学习笔记|大模型优质Prompt开发与应用课(二)|第一节:大模型应用密码—Prompt的一千种打开方式
  • QT chart进行画图