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

news2024/11/18 2:28:11

前言

为了很好的实现数据保存和数据共享, 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.coloradmin.cn/o/1377195.html

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

相关文章

这是一款户外可充电多功能LED地摊灯 手电筒方案

1,信息来源&#xff1a;深圳市世微半导体有限公司 Augus 2,产品的特性有&#xff1a; 全集成单芯片控制 5 照明循环模式可选 0.5A/1A 固定充电电流可选 内置 MOS 1.8A 驱动电流 可外置 MOS 驱动更大电流 充电指示/低电提示/短路提示 3A 手电筒过流保护? 预设 4.22V 电…

【一文搞懂JVM的内存屏障】

要命的问题&#xff1a; 什么是线程的安全性&#xff1f;怎么保证&#xff1f;jvm什么是的内存屏障&#xff1f;他有什么作用&#xff1f; **线程的安全性是指&#xff1a;**指在多线程环境下&#xff0c;多个线程同时访问同一资源时不会产生意外结果或导致数据出错的状态。其…

贝叶斯优化的基本流程

贝叶斯优化的基本流程 假设已知一个函数&#x1d453;(&#x1d465;)的表达式以及其自变量&#x1d465;的定义域&#xff0c;现在&#xff0c;我们希望求解出&#x1d465;的取值范围上&#x1d453;(&#x1d465;)的最小值&#xff0c;你打算如何求解这个最小值呢&#xf…

什么是云服务器CVM?

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

Linux NLTK 安装下载nltk_data

一、前提条件/环境 已经成功安装anaconda环境和nltk。anaconda环境和nltk可参考下面链接进行配置&#xff0c;nltk_data参考本文进行。 Linux安装Anaconda和配置nltk环境_cetons7安装nltk-CSDN博客 二、安装nltk_data 推荐离线安装&#xff0c;亲测成功&#xff01; 1、nltk_…

OpenCV-Python(35):BRIEF算法

算法介绍 BRIEF&#xff08;Binary Robust Independent Elementary Features&#xff09;是一种用于计算机视觉中特征点描述子的算法。它是一种二进制描述子&#xff0c;通过比较图像上不同位置的像素值来生成特征点的描述子。 BRIEF算法的基本思想是选取一组固定的像素对&…

宏景EHR view接口sql注入漏洞

产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合&#xff0c;满足动态化、协同化、流程化、战略化需求的软件. 漏洞概述 宏景eHR view接口处存在SQL注入漏洞&#xff0c;未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令&#xff0c;从而窃取…

为什么推荐大家使用动态住宅ip?怎么选择?

编辑代理ip的类型有很多&#xff0c;本文来介绍什么是动态住宅ip&#xff0c;为什么很多博主都推荐使用动态住宅ip&#xff0c;他到底有什么好处呢&#xff0c;接下来我们来学习一下。 一、什么是动态住宅ip 网络上的代理供应商很多&#xff0c;通常我们接触的比较多的几种类…

数据结构之二叉搜索树(Binary Search Tree)

数据结构可视化演示链接&#xff0c;也就是图片演示的网址 系列文章目录 数据结构之AVL Tree 数据结构之B树和B树 数据结构之Radix和Trie 文章目录 系列文章目录示例图定义二叉搜索树满足的条件应用场景 示例图 二叉 线形(顺序插入就变成了线性树&#xff0c;例如插入顺序为&…

构建基于RHEL7(CentOS7)的OpenSSH9.5p1的RPM包和升级回退方案

本文适用&#xff1a;RHEL7系列&#xff0c;或同类系统(CentOS7等) 文档形成时期&#xff1a;2023年 因软件世界之复杂和个人能力之限&#xff0c;难免疏漏和错误&#xff0c;欢迎指正。 文章目录 环境准备安装依赖openssh-9.5p1-el7.spec内容构建RPM包下载安装前注意事项开启t…

AI系统ChatGPT网站系统源码AI绘画详细搭建部署教程,支持GPT语音对话+DALL-E3文生图+GPT-4多模态模型识图理解

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

Milvus Cloud与携程的向量探索大公开

【User Tech】2024 我们来啦&#xff01; 今年&#xff0c;【User Tech】将更加专注于为社区用户提供技术功能解读、热点答疑&#xff0c;聚焦更丰富、更多样化的行业或使用场景的用户案例。我们期待通过分享更多关于 Milvus Cloud 的实战经验&#xff0c;为大家在 AI、大模型、…

JAVA开发的源码-供应商采购招标管理系统源码

SRM系统的主要功能包括&#xff1a; 私信获取源码 缩短采购周期时间&#xff1a;SRM数字化供应商管理系统提升企业之间的协作能力&#xff0c;将多个流程整合在一起&#xff0c;实现采购全流程线上化&#xff0c;在线审批流程的完整性&#xff0c;数字化供应商系统能够有效节约…

Java填充Execl模板并返回前端下载

功能&#xff1a;后端使用Java POI填充Execl模板&#xff0c;并返回前端下载 Execl模板如下&#xff1a; 1. Java后端 功能&#xff1a;填充模板EXECL,并返回前端 controller层 package org.huan.controller;import org.huan.dto.ExcelData; import org.huan.util.ExcelT…

GIT - 清除历史 Commit 瘦身仓库

目录 一.引言 二.仓库清理 ◆ 创建一个船新分支 ◆ 提交最新代码 ◆ 双指针替换分支 三.总结 一.引言 由于项目运行时间较长&#xff0c;分支较多&#xff0c;且分支内包含很多不同的大文件&#xff0c;随着时间的推移&#xff0c;历史 Git 库的容量日渐增发&#xff0c…

高级分布式系统-第6讲 分布式系统的容错性--故障/错误/失效/异常

分布式系统容错性的概念 分布式系统的容错性&#xff1a; 当发生故障时&#xff0c; 分布式系统应当在进行恢复的同时继续以可接受的方式进行操作&#xff0c; 并且可以从部分失效中自动恢复&#xff0c; 且不会严重影响整体性能。 具体包括以下4个方面的内容&#xff1a; 可…

nas系统盘制作(群晖)

目录 一、前言 二、制作系统盘 &#xff08;一&#xff09;下载镜像 &#xff08;二&#xff09;下载U盘刷写工具 三、资料获取 一、前言 群晖系统是使用比较多的nas系统。现在主要使用的是7版本的系统。 h群晖是指“h群晖NAS”&#xff08;Hackintosh NAS&#xff09;系统…

MindOpt:阿里巴巴达摩院打造的优化求解器及其组件全面介绍

MindOpt 简介和获取 MindOpt 是阿里巴巴达摩院决策智能实验室研发的决策优化软件。团队组建于2019年&#xff0c;聚焦于研发尖端运筹优化和机器学习技术&#xff0c;构建智能决策系统&#xff0c;更快更好地向各行各业提供数学建模与求解能力&#xff0c;帮助业务更快更好地做…

工作电压范围宽的国产音频限幅器D2761用于蓝牙音箱,输出噪声最大仅-90dBV

近年来随着相关技术的不断提升&#xff0c;音箱也逐渐从传统的音箱向智能音箱、无线音箱升级。同时在消费升级的背景下&#xff0c;智能音箱成为人们提升生活品质的方式之一。智能音箱是智能化和语音交互技术的产物&#xff0c;具有点歌、购物、控制智能家居设备等功能&#xf…