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

Docker 数据卷容器

docker在容器中管理数据主要有两种方式:

  • 数据卷(Volumes)
  • 挂载主机目录(Bind mounts)

        而每个容器的数据都是独立的,数据跟随着容器的生命周期。如mysql容器,如果容器被删除了所有的数据都会丢失。所以容器的数据不能放在容器里面,数据卷就用来管理容器中的数据的。

数据卷 

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

        数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,它可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

数据卷作用:

        将宿主机(虚拟机)的目录或者文件放到容器中去,容器删除了但是数据卷(虚拟机的目录里面的内容不受影响),将需要修改的配置文件在外面写好,通过数据卷的形式放到容器中来做替换。

1. 数据卷容器挂载

1.1.创建数据卷

docker volume create my-vol

命令如下:

参数可以为数字“1”,字母L:大小写均可,但效果不一样 
     ls -1 /var/lib/docker/volumes

此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看


1.2.查看所有的数据卷

docker volume ls


1.3.查看指定数据卷的详细信息(显示一个JSON格式的数据)

docker volume inspect my-vol


1.4.删除一个volume

docker volume rm my-vol

注:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,所以要及时删除。

1.5.启动一个挂载数据卷的容器

  • 挂载数据卷,最好是通过run而非create/start创建启动容器
  • create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以 
# 示例
docker run -itd \ #-it挂载后会直接进入容器,-itd则是在挂载不进入(后台运行)
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \ 
镜像名称## demo1docker run -itd \--name tomcat01 \--mount source=my-vol,target=/webapp \centos:latest## demo2docker run -itd \--name tomcat02 \--mount type=bind,source=/root/webapp02,target=/root/webapp02 \centos:latest        

注1:linux命令结尾加斜杠有什么用 ? 
        加了 “ \ ” 意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

注2:source=my-vol,target=/webapp
          my-vol为要挂载的数据卷,如果数据卷不存在,docker会自动创建
          /webapp为容器上目录,如果目录不存在, docker会自动创建   

注3:mount选项高级用法
          --mount选项的type参数支持三种类型的数据卷
          --mount标志:由多个名值对组成,逗号分隔,每个键值由 <key> = <value> 元组组成 
         
注4:--mount type=volume,source=my-vol,target=/webapp

    type的默认值,提前先创建数据卷:

  • type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下;
  • bind:绑定数据卷,映射到主机指定路径下:          
--mount type=bind,source=/webapp,destination=/webapp2
  •  tmpfs :临时数据卷,只存在于内存中
  docker run -itd \--name tmptest \--mount type=tmpfs,destination=/app \nginx:latest

注意:source=my-vol,target=/webapp

        这个指令会将my-vol内容替换掉webapp的内容,所以这中方式一般不用,如果需要将指定文件进行挂载就要使用目录挂载

2. 目录挂载

        如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。 数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。

2.1.首先我们在宿主机上创建一个目录用于存放资源

进入创建的tomcat数据卷路径,放入一个war包

2.2.Tomcat 挂载目录(简化)

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

挂载成功,访问tomcat: 

访问资源:

3. Tomcat在线部署案例 

        实现 Tomcat 在线部署是指在 Tomcat 运行的过程中,通过上传 WAR 文件或目录来动态地添加、删除或更新 Web 应用程序。这种方式可以避免每次更改应用程序时都要重新启动 Tomcat 的麻烦,并大大提高了开发和调试的效率。

 点进去报错,最初是没有配置登录信息的:

 1、修改tomcat配置,有两个文件需要修改可以直接在本地tomcat找到并修改上传到虚拟机:

  • apache-tomcat-8.5.40\webapps\manager\META-INF\context.xml 
  • apache-tomcat-8.5.40\conf\tomcat-users.xml

2、然后重启docker进行目录挂载

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

3、再次访问 Manager App:输入配置密码

4、上传资源

 

相关文章:

Docker 数据卷容器

docker在容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Volumes&#xff09;挂载主机目录&#xff08;Bind mounts&#xff09; 而每个容器的数据都是独立的&#xff0c;数据跟随着容器的生命周期。如mysql容器&#xff0c;如果容器被删除了所有的数据都会丢失…...

深度学习记录--梯度检验

数值逼近 为了对梯度进行检验&#xff0c;需要计算近似误差值来接近梯度 对于单边误差和双边误差公式&#xff0c;其中双边误差与真实梯度相差更小&#xff0c;故一般采用双边误差公式 双边误差 公式&#xff1a; 梯度检验(gradient checking) 对于成本函数&#xff0c;求出…...

ERP进出库+办公用品管理系统

系统架构 简介系统架构部分页面结构图UML逻辑图办公用品入出库 简介 本系统适用于ERP企业公司职员关于系统化的申请相关办公用品&#xff0c;提高整体系统整合行&#xff0c;加大上下级之间的联系&#xff0c;规避因人员过多&#xff0c;而浪费人力在简单重复的工作中&#xf…...

Redis 笔记一

概览 1.Redis核心数据存储结构 2.Redis底层String编码int&embstr&raw 3.Redis底层压缩列表&跳表&哈希表 4.Redis底层Zset实现压缩列表和跳表如何选择 5.基于Redis实现微博&抢红包&12306核心业务 辅助学习&#xff1a;Redis 教程 | 菜鸟教程 1.Redis为什…...

学习记录687@spring data jpa 动态传递list参数并判断list是否为空

实际应用中需要在spring data jpa中使用原生sql&#xff0c;传递的参数是list&#xff0c;要根据list判断是否为空来判断是否要使用这个参数。 尝试了很多方法&#xff0c;比如size、length、is null、!null等等&#xff0c;都要报错&#xff0c;比如could not extract Result…...

寒假刷题第五天

PTA甲级 1022 Digital Library 大模拟 #include<iostream> #include<unordered_map> #include<unordered_set> #include<vector> #include<set>using namespace std;unordered_map<string , set<int>>ti , au , key , pub , year…...

Leetcode454四数相加Ⅱ(java实现)

今天&#xff0c;我们分享的题目是Leetcode454四数相加Ⅱ&#xff0c;我们先来看题目&#xff1a; 首先可以从题意中大体得知&#xff0c;也是从某个集合中找有没有符合条件的元素。遇见这种类型的题目我们可以考虑用哈希表&#xff0c;本题我们选取的是map集合&#xff0c;因…...

mysql 容器化安装(docker)离线和在线

前言&#xff1a;在部署hive或airflow 升级过程中&#xff0c;总需要一个对应的数据库存储元数据&#xff0c;一个轻量级的mysql容器刚刚好。轻量、可快速移植、具有隔离性。 文章目录 1、查看机器版本2、安装 docker3、启动docker 服务4、docker 常用命令docker5、拉取mysql …...

2. FPGA的电路结构概述

文章目录 1. 引言2. FPGA的一般结构2.1 概要2.2 FPGA三部分构成间的关系&#xff1a; 3. 小结 1. 引言 结构决定原理。原理未必决定结构。理解FPGA结构&#xff0c;进而能阐明其工作原理很有必要。FPGA产品的风云变换&#xff0c;其基本结构保持相对不变。 2. FPGA的一般结构…...

【Qt】Qt配置

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…...

查看Linux系统内存、CPU、磁盘使用率和详细信息

一、查看内存占用 1、free # free -m 以MB为单位显示内存使用情况 [rootlocalhost ~]# free -mtotal used free shared buff/cache available Mem: 11852 1250 8668 410 1934 9873 Swap: 601…...

HttpServletRequest getServerPort()、getLocalPort() 、getRemotePort() 区别

getRemotePort() 、getServerPort()、getLocalPort() request.getServerPort()、request.getLocalPort() 和 request.getRemotePort() 这三个方法都是获取与HTTP请求相关的端口信息的 客户端(如浏览器)通过某个随机分配的网络连接端口(7070) 向服务器发送HTTP请求( http://exam…...

NVIDIA jetson编译opencv 源码 python版本

安装 jetson-stats 查看GPU的利用率 sudo apt-get install python3-pip sudo -H pip3 install jetson-stats 运行 jtop 进行查看 opencv 编译python版本 编译命令 cmake -D CMAKE_INSTALL_PREFIX/usr/local/opencv-4.6.0 -D CMAKE_BUILD_TYPERELEASE -D WITH_OPENGLON -D …...

TCP的三次握手,四次挥手

三次握手 第一次握手&#xff1a;客户端发送SYN报文&#xff0c;井发送seq为x序列号给服务端&#xff0c;等待服务端的确认第二次握手&#xff1a;服务端发送SYNACK报文&#xff0c;并发送seq为Y的序列号&#xff0c;在确认序列号为x1第三次握手&#xff1a;客户端发送ACK报文&…...

ElasticSearch高阶使用

目录 一、match_all 二、 text和keyword的区别 三、match、term的区别 四、exists query 五、 ids query 六、range query范围查询 七、prefix query前缀查询 八、 wildcard query通配符查询 九、 fuzzy query模糊查询 十、match query匹配查询 十一、multi_match q…...

美易官方:盘前:道指期货跌0.4% “恐怖数据”将发布

盘前&#xff1a;道指期货跌0.4% “恐怖数据”将发布 在今日的盘前交易中&#xff0c;道琼斯工业平均指数期货小幅下跌0.4%&#xff0c;市场正在等待即将发布的“恐怖数据”——美国零售销售数据。这一数据被视为衡量美国经济健康状况的重要指标&#xff0c;因此备受关注。 由于…...

appium之联动pycharm

前置条件&#xff1a; 1.java环境安装好了 2.android-sdk安装好&#xff08;uiautomatorviewer 也可以把这个启动起来&#xff09; 3.appium安装好 4.adb devices查看下设备是否连接 pycharm入门代码--固定写法 from appium import webdriver# 定义字典变量 desired_caps …...

Java中泛型的详细介绍

引言&#xff1a; Java语言中的泛型是一种强大的特性&#xff0c;它允许我们在编写代码时指定类、接口和方法的参数类型。通过使用泛型&#xff0c;我们可以提高代码的重用性、可读性和安全性。在本博客中&#xff0c;我们将详细介绍Java中泛型的知识。 一、泛型的基本概念 泛型…...

chrome 307状态码

问题&#xff1a;不知道什么原因导致http请求chrome始终307跳转到https,这个307的跳转非常恶心的地方是客户端缓存行为&#xff0c;并且非普通的f12下面清除缓存可以去掉 解决办法&#xff1a;使用chrome的清除浏览数据&#xff0c;通过这个方式清除&#xff0c;才能解决。 问…...

Redis在Windows10中安装和配置

1.首先去下载Redis 这里不给出下载地址&#xff0c;自己可以用去搜索一下地址 下载 下载完成后解压到D盘redis下&#xff0c;本人用的是3.2.100 D:\Redis\Redis-x64-3.2.100 2.解压完成后需要设置环境变量&#xff0c;这里新建一个系统环境变量中path 中添加一个文件所…...

如何通过LibreHardwareMonitor实现高效全面的硬件监控:实用指南

如何通过LibreHardwareMonitor实现高效全面的硬件监控&#xff1a;实用指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor Libre…...

从镜像到实战:星图OpenClaw+Qwen3-32B完整链路

从镜像到实战&#xff1a;星图OpenClawQwen3-32B完整链路 1. 为什么选择OpenClawQwen3-32B组合 去年冬天&#xff0c;当我第一次尝试用AI自动化处理周报时&#xff0c;发现公有云方案总在数据隐私和功能定制上让我束手束脚。直到遇见星图平台的OpenClaw镜像与Qwen3-32B组合&a…...

OpCore-Simplify:让黑苹果配置从复杂到简单的智能化革命

OpCore-Simplify&#xff1a;让黑苹果配置从复杂到简单的智能化革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾为黑苹果&#xff08;Hac…...

IntelliJ IDEA终极教程:从零基础到高效开发的完整指南

IntelliJ IDEA终极教程&#xff1a;从零基础到高效开发的完整指南 【免费下载链接】IntelliJ-IDEA-Tutorial IntelliJ IDEA 简体中文专题教程 项目地址: https://gitcode.com/gh_mirrors/in/IntelliJ-IDEA-Tutorial IntelliJ IDEA 是目前所有 IDE 中最具备沉浸式的 JVM …...

基于YOLOv8深度学习的驾驶员分心行为实时检测与语音预警系统【python源码+Pyqt5界面+数据集】

1. 项目背景与核心价值 开车时低头看手机、点烟、喝饮料这些看似平常的小动作&#xff0c;每年导致全球超过120万起交通事故。我去年参与某物流车队安全系统升级时&#xff0c;亲眼见过一个司机因为伸手拿水杯导致车辆偏离车道的事故录像——整个过程不到3秒。这正是我们开发这…...

DHTesp库详解:ESP32/ESP8266高可靠温湿度驱动与环境参数计算

1. DHTesp 库深度解析&#xff1a;面向 ESP32/ESP8266 的高可靠性温湿度传感驱动1.1 库的诞生背景与工程必要性DHTesp 并非简单的 Arduino 兼容库移植&#xff0c;而是在特定硬件约束下催生的工程化解决方案。其核心驱动力源于 ESP32 多核架构对传统单线协议&#xff08;1-Wire…...

燃油车虎视眈眈,电车涨价的图谋必将落空,油价上涨的利好将消失

近期以来多家电车企业涨价&#xff0c;美国电车涨价尤为明显&#xff0c;最高涨幅2万元&#xff0c;而国产电车涨价3000-1.4万元不等&#xff0c;凸显出电车似乎突然间对市场乐观起来&#xff0c;导致他们信心十足的在于3月份以来的油价上涨&#xff0c;但是这种涨价将迅速导致…...

保姆级教程:在WSL上用AWS CLI配置MinIO临时访问凭证(含时区避坑指南)

在WSL中实战MinIO临时凭证&#xff1a;从配置到避坑的全流程指南 如果你正在Windows系统上使用WSL进行开发&#xff0c;并且需要为MinIO对象存储生成临时访问凭证&#xff0c;那么这篇文章将为你提供完整的解决方案。我们将从环境准备开始&#xff0c;逐步深入到凭证生成、策略…...

UG/NX二次开发必备:C#和C++项目DLL自动签名与拷贝全攻略(附避坑指南)

UG/NX二次开发实战&#xff1a;C#与C项目DLL签名与部署全流程解析 在工业设计软件领域&#xff0c;Siemens NX&#xff08;原Unigraphics&#xff09;的二次开发能力一直是工程师扩展功能、提升效率的重要途径。而DLL文件的数字签名环节&#xff0c;则是确保开发成果能在正版NX…...

OpenClaw异常处理:配置nanobot自动重试失败任务

OpenClaw异常处理&#xff1a;配置nanobot自动重试失败任务 1. 为什么需要自动重试机制 上周我让OpenClaw执行一个简单的夜间数据收集任务时&#xff0c;遇到了一个令人头疼的问题。凌晨3点&#xff0c;网络突然波动导致任务中断&#xff0c;而当我早上打开电脑时&#xff0c…...