Docker挂载目录失败问题解决

news2024/11/18 17:49:29

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


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


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

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.coloradmin.cn/o/799756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloudAlibaba:服务网关之Gateway的cors跨域问题

目录 一:解决问题 二:什么是跨域 三:cors跨域是什么? 一:解决问题 遇到错误: 前端请求时报错 解决: 网关中添加配置文件,注意springboot版本,添加配置。 springboo…

Opencv Win10+Qt+Cmake 开发环境搭建

文章目录 一.Opencv安装二.Qt搭建opencv开发环境 一.Opencv安装 官网下载Opencv安装包 双击下载的软件进行解压 3. 系统环境变量添加 二.Qt搭建opencv开发环境 创建一个新的Qt项目(Non-Qt Project) 打开创建好的项目中的CMakeLists.txt,添加如下代码 # openc…

SpringBoot IOC与AOP(一)

IOC AOP 一、 分层解耦 内聚: 软件中各个功能模块内部的功能联系 耦合: 衡量软件中各个层/模块之间的依赖、关联的程度 软件设计原则:高内聚、低耦合 ​ 控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到…

Java 悲观锁 乐观锁

锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式 一、悲观锁、乐观锁定义 悲观锁就是我们常说到的锁。对于悲观锁来说,他总是认为每次访问共享资源时会发生冲突,所以必须每次数据操作加上锁,以保证临界区的程序同一时间只能有一个…

文件上传漏洞 -- uploadlabs为例

文件上传漏洞原理 一些web应用程序中允许上传图片、视频、头像和许多其他类型的文件到服务器中。 文件上传漏洞就是利用服务端代码对文件上传路径变量过滤不严格将可执行的文件上传到一个到服务器中 ,再通过URL去访问以执行恶意代码。 非法用户可以利用上传的恶意脚…

如何使用 Flatpak 在 Linux 上安装 ONLYOFFICE 桌面编辑器?

Flatpak 是一款与 Linux 发行版无关的软件实用工具,可用于在 Linux 上构建和分发桌面端应用。其可帮助您安装第三方 Linux 应用程序,无需安装库或处理依赖。 ONLYOFFICE 桌面版是什么 ONLYOFFICE 编辑器桌面版是一款全面的办公工具,提供了文…

常用抓包命令

tcpdump的命令参数介绍 tcpdump选项可划分为四大类型: 1.控制抓包行为 2.控制信息如何显示 3.控制显示什么数据 4.过滤命令 一个电脑是可以有多个网卡的! 易错:ping命令式指定网口要-I ,-i表示ping的时间间隔、tcpdump指定网口-i 。 nsloo…

优惠券秒杀(二)

库存超卖问题分析 库存超卖问题其本质就是多个线程操作共享数据产生的线程安全问题,即当一个线程在执行操作共享数据的多条代码的过程中,其他线程也参与了进来,导致了线程安全问题的产生。例如:线程1发送请求,查询库存…

openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句

文章目录 openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句22.1 语法格式22.2 参数说明22.3 示例 openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句 HAVING子句可以让我们筛选分组后的各组数据。 WHERE子句在所选列上设置条件,而HAVING子句则在由…

Facebook Shop商店如何开通?6个步骤

Facebook作为全球领先的社交平台,一直以来是跨境玩家的必争之地。据统计,目前它活跃用户27亿人/月,访问量21亿/天。近年来社媒电商红利当头,而Meta 于2020年5月推出的Facebook Shop也一直备受关注 。这也是用户的在facebook上网购…

108、RocketMQ的底层实现原理(不需要长篇大论)

RocketMQ的底层实现原理 RocketMQ由NameServer集群、Producer集群、Consumer集群、Broker集群组成,消息生产和消费的大致原理如下: Broker在启动的时候向所有的NameServer注册,并保持长连接,每30s发送一次心跳Producer在发送消息的时候从Na…

Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目

Tomcat 一、Tomcat简介二、Tomcat基本使用三、Maven创建Web项目3.1 Web项目结构3.2开发完成部署的Web项目3.3创建Maven Web项目3.3.1方式一3.3.2方式二(个人推荐) 总结 一、Tomcat简介 Web服务器: Web服务器是一个应用程序(软件&…

RNN架构解析——GRU模型

目录 GRU模型实现优点和缺点 GRU模型 实现 优点和缺点

day46-SSM

0目录 SSM 1.SSM框架集成 1.1 创建数据库、表、工程,引入依赖 1.2 配置web.xml(前端控制器和字符过滤器) 1.3 配置applicationContext.xml 1.4 实现增删改查功能 可以用Model对象替代HttpServletRequest 详情页面:Ma…

超宽带人员定位系统源码 智慧工厂人员定位系统源码

超宽带人员定位系统源码 智慧工厂人员定位系统源码 随着工业信息化技术的发展,大型制造企业对人员、车辆、物资的管理要求越来越细致,企业希望更科学的调度每一个生产元素,从而突破管理瓶颈,进一步提高生产效率及企业安全管理和服…

[计算机入门] 操作项目

2.9 操作项目 2.9.1 新建项目 方法一: 切换到主页选项卡,点击新建项目,在弹出的项目中,点击要新建文件类型。如果是要新建文件夹,只需要点击当前选项卡新建组中的新建文件夹即可。 方法二: 在当前文件夹…

[OnWork.Tools]系列 02-安装

下载地址 百度网盘 历史版本连接各种版本都有,请下载版本号最高的版本 链接:https://pan.baidu.com/s/1aOT0oUhiRO_L8sBCGomXdQ?pwdn159提取码:n159 个人链接 http://on8.top:5000/share.cgi?ssiddb2012fa6b224cd1b7f87ff5f5214910 软件安装 双…

华为刷题:HJ3明明随机数

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int N scan.nextInt();int[] arr new int[N];for (int i 0; i < N; i) {int n sca…

哈希表的简单模拟实现

文章目录 底层结构哈希冲突闭散列定义哈希节点定义哈希表**哈希表什么情况下进行扩容&#xff1f;如何扩容&#xff1f;**Insert()函数Find()函数二次探测HashFunc()仿函数Erase()函数全部的代码 开散列定义哈希节点定义哈希表Insert()函数Find()函数Erase()函数总代码 初识哈希…

vue基础-axios封装/同步请求

&#x1f4d6; 本章介绍 Vue 项目中如何使用 Axios 封装 http 请求&#xff0c;请求/响应拦截器部分写的比较简单&#xff0c;后续项目中可以补充。 &#x1f4a6; 1、/src/utils/目录下建立一个htttp.js 导入axios设置axios请求参数创建axios实例请求拦截器响应拦截器封装ge…