【Docker】Linux中Docker数据管理的数据卷及挂载

目录

一、数据管理

1. 讲述

2. 应用场景

二、数据卷的应用

1. 命令

2. tomcat镜像

3. 挂载数据卷

4. 项目部署在数据卷

三、目录挂载

四、完善Tomcat配置

每篇一获


一、数据管理

1. 讲述

Docker 的数据管理主要涉及到两个方面:数据卷(Volumes)绑定挂载(Bind Mounts)

  1. 数据卷(Volumes):数据卷是 Docker 提供的一种数据管理方式,它在 Docker 主机上创建一个特殊的目录,可以直接由容器访问。数据卷的主要优点是数据的持久性和数据共享。即使容器被删除,数据卷中的数据也不会丢失,可以被其他容器使用。

    创建数据卷的命令是 docker volume create,使用数据卷的命令是 docker run -v volume-name:/path/in/container

  2. 绑定挂载(Bind Mounts):绑定挂载允许您将 Docker 主机上的任何目录挂载到容器中。这种方式的优点是数据的实时性,任何在主机上对这个目录的修改都会立即反映到容器中。

    使用绑定挂载的命令是 docker run -v /path/on/host:/path/in/container

请注意,数据卷和绑定挂载都可以在 docker run 命令中使用 -v 或 --volume 选项来指定。但是,数据卷和绑定挂载的语法有所不同,数据卷使用的是 volume-name:/path/in/container,而绑定挂载使用的是 /path/on/host:/path/in/container

2. 应用场景

数据卷(Volumes)

  1. 数据持久化:数据卷可以在容器之间或者在容器重启后保持数据的持久化。即使容器被删除,数据卷中的数据也不会丢失。

  2. 数据共享:数据卷可以被多个容器同时挂载,实现容器间的数据共享。这对于需要多个容器共享数据的场景非常有用。

  3. 备份、恢复和迁移:数据卷可以方便地进行备份和恢复,也可以用于容器的数据迁移。

  4. 性能优化:数据卷的性能通常优于绑定挂载,因为数据卷跳过了主机文件系统的一些用户空间和权限检查。

  5. 与 Docker 插件集成:数据卷可以与 Docker 插件集成,实现更多的功能,比如数据加密、数据复制等。

绑定挂载(Bind Mounts)

  1. 分布式文件系统:在分布式系统中,多个计算机节点可以通过绑定挂载将共享的文件系统挂载到本地目录上,实现文件的共享和访问。这样可以方便地在不同节点之间共享数据和资源。
  2. 数据存储和备份:绑定挂载可以将外部存储设备(如硬盘、网络存储等)挂载到计算机的文件系统中,实现数据的存储和备份。这样可以方便地扩展存储容量,同时也可以提高数据的可靠性和可用性。
  3. 虚拟化环境:在虚拟化环境中,绑定挂载可以将虚拟机的磁盘镜像挂载到宿主机的文件系统中,实现虚拟机的启动和管理。这样可以方便地管理和迁移虚拟机,同时也可以提高虚拟机的性能和可靠性。
  4. 容器化应用:在容器化应用中,绑定挂载可以将宿主机的目录挂载到容器中,实现容器和宿主机之间的数据共享。这样可以方便地在容器中访问宿主机的文件和目录,同时也可以提高容器的性能和可靠性。

总的来说,绑定挂载和数据卷都可以实现数据的持久化和共享,但它们适用的场景略有不同。绑定挂载更适合需要在主机和容器之间共享特定文件或目录的场景,而数据卷更适合需要在容器之间共享数据,或者需要数据持久化的场景。

二、数据卷的应用

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

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

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

1. 命令

创建数据卷

docker volume create v1 (v1是名称,可以自己修改)

查看所有数据卷

docker volume ls     

 

查看数据卷信息

docker volume inspect v1  (v1是名称,根据名称查看)

删除一个volume

docker volume rm v1    (v1是名称,根据名称删除

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

2. tomcat镜像

开放端口

虚拟机的端口没有开发端口需要先开发端口,如何虚拟机的端口已经开放,就可以直接安装并创建tomcat镜像及容器

开放端口命令 :firewall-cmd --zone=public --add-port=8080/tcp --permanent  (开放8080

 之后更新端口:firewall-cmd --reload  

查看已开放的端口:firewall-cmd --zone=public --list-ports

 安装并创建

命令: docker run -itd  --name t1  -p 8080:8080   tomcat:8.5.20      

其中  t1 是tomcat容器的名称(可以自己修改),前面的8080为主机端口(主机端口可以自己修改),后面的8080为虚拟机端口(尽量不用修改),tomcat:8.5.20中的8.5.20Tomcat的版本。如果命令中没有 :8.5.20,后面只带 tomcat,就会默认为最新的版本

之后就可以在自己的主机(自己的电脑)上的浏览器,通过访问虚拟机ip访问到tomcat。

3. 挂载数据卷

实现共享

数据卷中的数据是共享的,先挂载一个数据卷并且创建一个容器,容器名称为 c1。

命令: docker run -it   --name c1  --mount source=v1,target=/testdir  centos

在创建一个容器并且挂载相同的数据卷,容器名称为 c2 

命令: docker run -it   --name c2  --mount source=v1,target=/testdir  centos

 

命令中 --name 后面的c1和c2,是容器名称可以自己修改,source=v1中的v1是挂载的数据卷名称,/testdir 是创建容器后创建这个路径来共享数据资源。

在c1容器中,创建一个文件,命令:touch a.txt

之后,进入文件,在c2容器中的共享文件中可以看到,c1容器中创建的文件

删除容器,数据依然在

查看容器的信息:docker inspect v1   (v1容器名称)

找到容器存放数据的路径,并且查看在数据卷中的数据。

输入命令:exit (退出容器)

输入命令删除所有容器:docker rm -f $(docker ps -aq)   

 删除之后,再查看其中的数据依然还在,不会随着容器的删除而删除。


4. 项目部署在数据卷

复制数据卷的路径,在左边路径窗口中窗口到跟目录,将本机的war包拖进去。

/var/lib/docker/volumes/v1/_data

获取到tomcat的webapps文件的全路径,如:/usr/local/tomcat/webapps,进入tomcat中可以用命令:pwd  获取当前的跟路径。

将数据卷中的项目挂载到tomcat的webapps文件中,并且启动tomcat。

命令 : 

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

t1 是容器名称,target后面的路径是将项目挂载到tomcat中。

之后,在本机访问,虚拟机的IP加项目路径即可访问项目:

三、目录挂载

使用目录挂载,将目录中的文件挂载

在虚拟机跟目录下创建一个文件夹:mkdir soft      (名称soft,可以自己修改)

将项目的war包拖入到该文件夹中:

方法一: 

输入命令 : 

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

 

其中的 t1  为容器名称,/soft为虚拟机的路径中的文件,而将这些文件挂载到tomcat的/usr/local/tomcat/webapps路径中,并且启动运行

在主机访问:

方法二:

在文件夹中指定文件挂载,并且指定挂载后的文件名称,输入命令 :

 

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

 

其中的 t1  为容器名称,/soft/oapro.war为虚拟机的路径中的文件中指定的挂载文件,而将这个文件挂载到tomcat的/usr/local/tomcat/webapps路径中指定名称为oapro.war,并且启动运行

在主机访问:

四、完善Tomcat配置

将本地的tomcat,找到/conf/tomcat-users.xml,的tomcat-users.xml文件,复制到桌面进行修改该文件,如图:

修改如下:

 

<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/> 


 将本地的tomcat,找到/webapps/manager/META-INF/context.xml,的context.xml文件,复制到桌面进行修改该文件,如图:

修改如下:

之后将这两个文件拖到虚拟机中

之后输入命令:

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

 

之后主机访问如图:

每篇一获

学习在Linux中使用Docker的数据管理技术可以带来以下收获:

      1. 数据隔离和持久化:Docker提供了多种数据管理技术,如数据卷(Volumes)、绑定挂载(Bind Mounts)和临时文件系统(Tmpfs),可以实现数据的隔离和持久化。通过使用这些技术,您可以将数据与容器分离,使得容器的生命周期与数据的生命周期独立,方便数据的管理和迁移。

       2. 数据共享和共享卷:Docker的数据管理技术可以实现容器之间的数据共享。通过创建共享卷(Shared Volumes),多个容器可以访问和共享同一份数据,方便实现容器之间的通信和协作。

      3. 数据备份和恢复:使用Docker的数据管理技术,您可以方便地对容器中的数据进行备份和恢复。通过创建数据卷或使用绑定挂载,您可以将容器中的数据保存到外部存储设备中,以便在需要时进行恢复。

      4. 数据迁移和部署:Docker的数据管理技术可以帮助您实现容器的数据迁移和部署。通过将数据卷或绑定挂载与容器分离,您可以方便地将容器和数据分别部署到不同的环境中,实现快速的应用部署和迁移。

总的来说,学习在Linux中使用Docker的数据管理技术可以提高数据的管理效率和灵活性,同时也方便了容器的部署和迁移。这些技术可以帮助您更好地利用Docker来构建和管理应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[linux]编译一个ko文件并运行

一、需求 有一段代码需要在运行时加载注入内核中&#xff0c;当用户层需要访问时可以提供内核态环境去运行。 二、c代码构建 // #include <errno.h> // #include <string.h> // #include <stdio.h> // #include <fcntl.h> // #include <stdlib.h…

Docker数据卷与拦截与目录拦截

目录 高级容器挂载技术深度解析引言数据卷挂载原理解析应用场景使用介绍 目录挂载原理解析应用场景使用介绍 总结 高级容器挂载技术深度解析 引言 容器技术的快速发展使得容器挂载技术变得愈发重要。在容器化应用中&#xff0c;数据卷挂载和目录挂载是两种常见的挂载方式&…

SpringMVC 学习博客记录

文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…

测试八年|对业务测试人员的一些思考

自从事测试工作八年多以来&#xff0c;经历过三个部门多条业务线&#xff0c;也经历过测试转型再回到测试&#xff0c;在此过程中对测试工作和角色的认知也逐步有些思考&#xff0c;想把这些思考分享给大家&#xff0c;希望为业务测试同学提供一些有价值的思路。 一、质量保障…

U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题

一、使用U盘制作启动盘遇到问题 下载了windows原版镜像&#xff0c;验证了md5&#xff0c;确保文件没有损坏。使用ultroiso制作u盘启动盘&#xff0c;开始安装后出现下图的报错&#xff1a; 在网上搜索解决方案&#xff0c;主要有以下几种&#xff1a; 安装的时候&#xff0c…

POI:对Excel的基本写操作 整理1

首先导入相关依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><!--xls(03)--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></depend…

SpringBoot中 如何优雅的 重试调用 第三方API?

引言 在实际的应用中&#xff0c;我们经常需要调用第三方API来获取数据或执行某些操作。然而&#xff0c;由于网络不稳定、第三方服务异常等原因&#xff0c;API调用可能会失败。为了提高系统的稳定性和可靠性&#xff0c;我们通常会考虑实现重试机制。 本文将深入探讨如何在…

Defi安全--Zunami Protocol攻击事件分析

其它相关内容可见个人主页 1 Zunami攻击事件相关信息 2023.8.13发生在Ethereum上发生的攻击&#xff0c;存在两个攻击交易&#xff0c;具体信息如下&#xff1a; 攻击合约地址&#xff1a;Contract Address 攻击合约 攻击者地址&#xff1a;Zunami Protocol Exploiter 攻击…

【DB2】installSAM执行后会重启这件事

碎碎念 在使用自动化工具安装TSAMP的过程中&#xff0c;机器会自动重启这件事。 TSAMP真的挺折磨的&#xff0c;一个月居然因为这件事情debug两次了。 在测试自动化脚本的时候&#xff0c;第一遍安装都是好好的&#xff0c;从第二遍开始&#xff08;因为要测试脚本的幂等性&…

openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态

文章目录 openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态195.1 分析查询语句运行状态195.1.1 问题现象195.1.2 处理办法 openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态 195.1 分析查询语句运行状态…

2024年实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

【工具栏】Rainbow Brackets(彩虹括号) 插件的安装和使用

使用前 这一段代码里有这么多括号&#xff0c;找到相匹配的括号需要花点时间 &#xff0c;但是安装Rainbow Brackets插件后&#xff0c;代码在括号方面多一份美观 安装 效果如下&#xff1a;

IPv6路由协议----BGP4+

BGP基本概念 边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。 MP-BGP是对BGP4进行了扩展达到在不同网络中应用的目的,BGP4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网…

【论文阅读】Self-supervised Learning: Generative or Contrastive

Abstract 研究了在计算机视觉、自然语言处理和图形学习中用于表示的新的自监督学习方法。全面回顾了现有的实证方法&#xff0c;并根据其目的将其归纳为三大类&#xff1a;生成性、对比性和生成性对比&#xff08;对抗性&#xff09;。进一步收集了关于自我监督学习的相关理论…

Windows压缩包的MySQL安装方式

1.下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-winx64.zip 2.解压压缩包&#xff08;建议将解压到非C盘&#xff0c;路径不要出现特殊符号&#xff09; 3.在MySQL主目录下&#xff0c;创建my.ini空文件&#xff08;先创建一个txt文件&#xff0c;进…

记一次 Redis 数据库迁移

笔者通过一个 Redis 数据库迁移的例子&#xff0c;介绍了迁移脚本的执行思路。 作者&#xff1a;马文斌&#xff0c;MySQL/Redis 爱好者~ 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文约 500 字&#xff0c;预计阅…

jmeter--3.使用提取器进行接口关联

目录 1. 正则表达式提取器 1.1 提取单个数据 1.2 名词解释 1.3 提取多个数据 2. 边界值提取器 2.2 名词解释 3. JSON提取器 3.1 Json语法 3.2 名词解释 3.3 如果有多组数据&#xff0c;同正则方式引用数据 1. 正则表达式提取器 示例数据&#xff1a;{"access_to…

flask框架基本使用

一、使用pycharm创建项目 1.创建项目 2.调整默认终端 3.打开虚拟终端 打开终端可以看出使用的是p1的虚拟机终端了 4.pyCharm小技巧 在flask种输入一个完整并且存在的函数名称或者类明&#xff0c; 然后 Alt 回车&#xff0c;pycharm可以自动导包&#xff0c;不用在手动在代…

Vue面试之组件通信的方式总结(下篇)

Vue面试之组件通信的方式总结 $refprovide&injectprovideinject EventBus事件总线vuex 最近在整理一些前端面试中经常被问到的问题&#xff0c;分为vue相关、react相关、js相关、react相关等等专题&#xff0c;可持续关注后续内容&#xff0c;会不断进行整理~ 在Vue框架中&…

利用Wireshark分析IP协议

实验.利用Wireshark分析IP协议 一&#xff0e;实验目的 1.掌握Wireshark软件简单的过滤语法 2.掌握IP数据报的组成格式 3.掌握IP分片的计算方法 4.学会利用Wireshark抓包分析IP协议 二&#xff0e;实验环境 1.Wireshark软件 2.Windows 计算机 三&#xff0e;实验预备知识 1.IP…