Docker进阶数据卷目录挂载及在线部署

前言

为了很好的实现数据保存和数据共享, Docker 提出了 Volume 这个概念,简单的说就是绕过默认的联合
文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷

一. 数据卷介绍

Docker 中的数据卷(Volume)是用于持久化存储容器数据的一种机制。它可以将主机上的目录或文件与容器内的目录或文件进行关联,从而实现数据的共享和持久化。

使用数据卷可以实现以下几个方面的优势:

  1. 数据持久化:容器运行期间,数据卷中的数据可以被保留下来,即使容器被删除或重新创建,数据仍然可以被访问到。

  2. 数据共享:多个容器可以共享同一个数据卷,从而实现容器之间的数据共享。

  3. 数据备份与恢复:可以通过备份数据卷来实现容器数据的备份,然后在需要的时候恢复到其他容器中。

  4. 高性能访问:数据卷通常会比容器内部的文件系统性能更好,特别是对于大量读写操作的场景。

二. 数据卷挂载

1.数据卷操作

docker volume create v1  (v1为数据卷的名称)

 1.1查看数据卷

docker volume ls

1.2 删除数据卷

docker volume rm v1(数据卷名称)

 1.3 查看所有数据卷

docker volume ls

1.4 查看数据卷信息

docker volume inspect v1(数据卷名称)

 1.5 docker容器挂载数据卷

docker run -it \
--name c1 \
--mount source=v1,target=/testdir \
centos

注:c1为容器名字,v1为挂载的数据卷,target=/***是指在创建时指定创建一个名为***的目录,在我们为某个容器挂载数据卷时只有在容器创建时才能为它进行挂载,当前命令指创建一个名为c1的容器并为它指定的数据卷为v1,挂载的目录为testdir(当前名字可以任意,在创建容器时会自动创建该目录)

4.数据卷共享

当我们在进行挂载数据卷时,可以不同容器指定同一数据卷,只需要将容器名更改即可,我们不管在哪个容器进行操作,都会同时共享一个数据卷 

小结

容器和数据卷是两个独立的不同的模块,当我们操作容器时,例如删除,不会影响数据卷,数据卷依然存在,当我们下次创建数据卷时依然可以挂载

小实战(将war包挂载到数据卷中并运行在Tomcat) 

1.找到数据卷路径

查看所有数据卷

docker volume ls

查看指定数据卷信息(v1为数据卷名称)

docker inspect v1

2.cd 进入当前目录

将提前准备好的测试war包拖到当前目录下

 3.创建容器将war包挂载到当前容器中

docker run -itd \
--name t1 \
-p 8080:8080 \
--mount source=v1,target=/usr/local/tomcat/webapps \
tomcat:8.5.20

注意:当前命令是将我们的数据卷目录替换掉当前目录/usr/local/tomcat/webapps,也就是将当前目录中的文件全部替换成数据卷目录文件使它们数据保持一致

这里我们可以回到自己的windows,在浏览器中利用IP/项目名 进行访问

访问成功后说明项目成功挂载到数据卷中并运行成功

三.目录挂载

1.创建目录

创建目录并进入

mkdir soft
cd soft

2.创建容器并挂载当前目录

docker run -itd \
--name t1 \
-v /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.20

在上面的命令中soft将webapps直接替换了,等于进行了一个重新命名,-v 既可以挂载目录
-v 还可以单独挂载文件

 四.Tomcat在线部署

实现思路:通过将修改好的配置文件挂载到目录中,然后通过当前的用户名密码进入到当前系统中的Tomcat实现在线部署

1.将配置文件上传到虚拟机中

在我们的本机Windows中的tomcat文件夹中找到conf/tomcat-users.xml文件(用户信息文件),并将其上传到刚刚虚拟机上创建的soft文件夹

示例:

 再将Tomcat中的webapps\manager\META-INF\context.xml进行上传

示例

2.修改配置文件

双击进入tomcat-users.xml,我们在当前文件位置加入以下代码,修改完成后保存并退出

注意:下面的password那一栏需要修改为自己的密码

<role rolename="manager-gui"/>
<user username="tomcat" password="自己的密码" roles="manager-gui"/>

然后双击进入到我们的context.xml文件,将下面示图的部分进行注释(一般是没有注释的),修改完成后保存并退出

 3.将配置文件挂载到目录中

docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.20

注:tomcat-users.xml为自己的刚刚上传的用户信息文件的文件名,/usr/local/tomcat/conf/tomcat-users.xml为要替换的当前虚拟机中Tomcat的tomcat-users.xml文件,context.xml同理

4.在线部署

进入管理页进行在线部署

 登录输入自己的用户名和密码进入(用户名一般为tomcat)

登录进入后上传war包即实现在线部署

报错解决

 1.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: error during container init: error mounting "/soft/tomcat-users.xml" to rootfs at "/usr/local/tomcat/conf/tomcat-users.xml": mount /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml (via /proc/self/fd/7), flags: 0x5000: 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
Error: failed to start containers: t

原因:路径参数不正确,检查自己的文件路径名,soft是否在根路径

2.

docker: Error response from daemon: Conflict. The container name "/t1" is already in use by container "c7e532fc6407996f987f41f88ef2661dd054d9a74ad0b0effd728345680e8ef9". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

原因:容器重复,删除之前的容器名相同的容器,或者创建时换一个名称 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616033.shtml

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

相关文章

【计算机组成-计算机基本结构】

课程链接&#xff1a;北京大学陆俊林老师的计算机组成原理课 1. 电子计算机的兴起 原因&#xff1a;二战对计算能力的需求世界上第一台通用电子计算机 ENIAC&#xff08;Electronic Numerical Integrator And Computer&#xff09;&#xff1a;时间&#xff1a;1946&#xff1…

Js - 函数(四)

1.函数简单介绍 什么是函数&#xff1f; 函数&#xff08;function&#xff09;是执行特定任务的一段代码块 为什么需要函数&#xff1f; 可以实现代码复用&#xff0c;提高开发效率 2.函数使用 函数的声明语法 函数名命名规范 函数的调用语法 函数体 函数体是函数的构…

数据库开发工具:Navicat Premium 16 (Win/Mac)中文激活版

Navicat Premium 16 是一款强大的数据库管理工具&#xff0c;旨在帮助用户更轻松地管理和维护各种数据库类型。 以下是关于 Navicat Premium 16 的详细介绍&#xff1a; 数据库支持&#xff1a;Navicat Premium 16 支持多种数据库类型&#xff0c;包括 MySQL、PostgreSQL、SQLi…

【vpp2206 测试】

vpp 2206编译# ./extras/vagrant/build.sh # make build # make runstartup-default.conf 的内容cpu {main-core 0 }unix {interactive cli-listen 127.0.0.1:5002log /tmp/vpp.logfull-coredumpstartup-config /home/king/share/vpp/startup.txt }dpdk {uio-driver igb_uiodev…

在Linux下配置Apache HTTP服务器

在Linux的世界里&#xff0c;如果说有什么比解决各种“神秘”的故障更让人头疼&#xff0c;那一定就是配置Apache HTTP服务器了。这不是因为Apache有什么问题&#xff0c;而是因为配置它简直就像解谜游戏&#xff0c;一不留神就会让你陷入无尽的纠结。 首先&#xff0c;你需要…

【AI视野·今日Sound 声学论文速览 第四十五期】Wed, 10 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 10 Jan 2024 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Masked Audio Generation using a Single Non-Autoregressive Transformer Authors Alon Ziv, Itai Gat, Gael Le Lan, Tal Remez, Felix…

Debian/Ubuntu配置aliyun源和安装工具

将 Debian 10 的 apt-get 源更换为 aliyun&#xff0c;以提升国内环境 apt install 的速度。 1&#xff09;备份原 apt-get 源文件 roote3c22f627b9e:~# cd /etc/apt roote3c22f627b9e:/etc/apt# cp sources.list sources.list.bak 2&#xff09;清除原 apt 源文件内容 ro…

解决python画图无法显示中文的问题

python画图遇到的问题&#xff1a; 中文不显示&#xff1a; 解决方法&#xff1a;把字体设置为支持中文的字体&#xff0c;比如黑体 黑体下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BD7zQEBUfcIs6mC2CPYy6A?pwdv120 提取码&#xff1a;v120 pyhon…

【离散数学】xjtu版离散复习攻略

据学长及同级同学经验&#xff0c;按我校的考察难度&#xff0c;离散数学一天速通不是问题。如果你是正在阅读本篇的学弟/学妹&#xff0c;且复习时间紧张&#xff0c;可考虑把离散放到考前一天来复习。 网络上的资源已经足够详尽&#xff0c;只不过大多数没有介绍自然推理系统…

485总线抢占冲突问题

假如当前有一个主机&#xff0c;和两个从机&#xff0c;主机发送msg1给从机1&#xff0c;10毫秒后&#xff0c;发送msg2给从机2。 然后从机1和从机2都会回复报文给主机&#xff0c;但是如果从机2想要回复给主机的时候&#xff0c;从机1正在发送报文给主机&#xff0c;这时候会怎…

Visual Studio常用快捷键及调试操作

CtrlF10 运行到光标处 调试时候不用一行行按F10了CtrlMM 折叠或展开当前方法CtrlMO 折叠所有方法CtrlML 展开所有方法CtrlEW 自动换行/取消自动换行CtrlU 选中文本转小写CtrlShiftU 选中文本转大写CtrlWinO 启动软键盘F9 光标行加断点CtrlAltB 打开断点窗口 或通过Debug -> …

【发票识别】支持pdf、ofd、图片格式的发票

背景 为了能够满足识别各种发票的功能&#xff0c;特地开发了当前发票识别的功能&#xff0c;当前的功能支持pdf、ofd、图片格式的发票识别&#xff0c;使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术&#xff0c;用到机器学习和深度学习的相关技术。 体验 体…

ChatGPT到底能做什么呢?

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

批量修改文件名-txt_word_ppt批量修改文件名

word/excel/ppt等等批量修改文件名批量修改文件名的方法有N多种,我的这种是比较简单的,小白也可以使用使用windows自带的批处理脚本进行批量重命名什么类型的文件批量修改原理都一样,这里以txt修改为例 1.创建文件测试 通过py脚本快速创建文件测试,这步是创建100个txt文件,这…

【开源】基于JAVA的数据可视化的智慧河南大屏

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

自动化测试框架pytest系列之21个命令行参数介绍(二)

第一篇 &#xff1a; 自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 接上文 3.pytest功能介绍 3.1 第一条测试用例 首先 &#xff0c;你需要编写一个登录函数&#xff0c;主要是作为被测功能&#xff0c;同时编写一个测试脚本 &#xff0c;进行测试登录功能 。 登…

java基础课后习题答案

文章目录 第1章 Java开发入门第2章 Java编程基础第3章 面向对象&#xff08;上&#xff09;第4章 面向对象&#xff08;下&#xff09;第5章 异常第6章 Java API第7章 集合类第8章 泛型第9章 反射第10章 IO&#xff08;输入输出&#xff09;第11章 JDBC第12章 多线程第13章 网络…

Go语言的垃圾回收器

1. 简介 Go语言的垃圾回收器&#xff08;GC&#xff09;是一个自动内存管理系统&#xff0c;它可以自动回收不再使用的内存。GC可以帮助程序员避免内存泄漏和内存错误&#xff0c;从而提高程序的稳定性和可靠性。 2. GC的工作原理 Go语言的GC使用标记-清除算法来回收内存。标…

GBASE南大通用ExecuteScalar 方法

GBASE南大通用执行查询&#xff0c;并返回查询结果集的一行的第一列&#xff0c;忽略其余的行和列 。  语法 [Visual Basic] Public Overrides Function ExecuteScalar As Object [C#] public override Object ExecuteScalar()  返回值 执行查询&#xff0c;并返回查…

超级计算集群

超级计算集群&#xff08;Supercomputing Cluster&#xff09;是一种集成大量高性能计算节点、高速互联网络以及高效能存储系统的计算机系统&#xff0c;用于解决科学、工程、商业等领域中需要极端计算能力的问题。这些集群通常由成百上千甚至上万台服务器组成&#xff0c;通过…