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。

命令 : 

  1. docker run -itd  \
  2. --name t1   \
  3. -p 8080:8080  \
  4. --mount source=v1,target=/usr/local/tomcat/webapps   \
  5. 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路径中,并且启动运行

在主机访问:

方法二:

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

 

  1. docker run -itd  \
  2. --name t1  \
  3. -p  8080:8080   \
  4. -v  /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war  \
  5. 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来构建和管理应用程序。

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

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

相关文章

【基于Java Swing设计药品信息管理系统】——界面美观、功能全,可直接上手使用

一、基本功能描述 药品信息管理系统的选题背景主要是因为现今医疗行业中,药品管理和库存管理都是非常重要而复杂的工作。传统的手动记录、查询等方式耗费人力物力较多,并且容易出错。因此,采用计算机技术来帮助药品信息管理和库存管理已成为必要的趋势。 该药品信息管理系统…

Linux中PyTorch的安装教程

在安装PyTorch之前&#xff0c;我们需要确保已经安装了Python和pip。可以使用以下命令检查是否已经安装&#xff1a; python --version pip --version如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-get update sudo apt-get install python3 sudo apt-…

利用网络威胁情报增强网络安全态势

在当今的网络威胁形势下&#xff0c;明智且主动的防御策略至关重要。网络威胁情报是组织的重要工具&#xff0c;可帮助他们预测和应对网络风险。网络威胁情报不仅提供原始数据&#xff0c;还提供&#xff1a; 深入了解网络攻击者的动机了解他们的潜在目标了解他们的战术 通过…

2024阿里云服务器ECS介绍_全方位解析_CPU性能详解

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…

【Unity】Attribute meta-data#com.google.android.play.billingclient.version 多版本库冲突

文章目录 一、背景二、问题描述三、解决方案 一、背景 1、Unity 2021.3.9f1 2、Max由6.0.1至最新版本6.1.0 二、问题描述 错误信息 Attribute meta-data#com.google.android.play.billingclient.versionvalue value(6.1.0) from [com.android.billingclient:billing:6.1.0] An…

【LeetCode】203. 移除链表元素(简单)——代码随想录算法训练营Day03

题目链接&#xff1a;203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff…

Android 12.0 系统开启和关闭黑白模式主题功能

1.概述 在12.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

什么是国密算法

国密算法是指由中国国家密码管理局发布的密码算法标准&#xff0c;旨在保障国家信息安全。目前&#xff0c;国家密码管理局已发布了一系列国产商用密码标准算法&#xff0c;包括SM1&#xff08;SCB2&#xff09;、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法&#xff08;ZUC)等…

SGL-110型定时限过流继电器 额定电流5A 额定电压220V 交直流通用 板前接线

系列型号 LGY-110零序过电压继电器&#xff1b; LGL-110零序过电压继电器&#xff1b; LGL-110/AC零序过电压继电器&#xff1b; LGL-110零序过电流继电器 板前接线 &#xff11; 应用 LGL-110 型零序过电流继电器用作线路和电力设备的零序过电流保护。 LGY-110 型零序过…

SQL Server的彻底卸载的方式

这篇文章主要介绍了SQL Server的彻底卸载的方式&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。如有错误或未考虑完全的地方&#xff0c;望不吝赐教 SQL Server的彻底卸载与再次安装 可能大家已经有深刻体会&#xff0c;SQL Server的卸载十分繁琐。最让人头…

【AWS】使用亚马逊云服务器创建EC2实例

目录 前言为什么选择 Amazon EC2 云服务器搭建 Amazon EC2 云服务器注册亚马逊账号登录控制台服务器配置免费套餐预览使用 Amazon EC2 云服务器打开服务器管理界面设置服务器区域填写实例名称选择服务器系统镜像选择实例类型创建密钥对网络设置配置存储启动实例查看实例 总结 前…

第22集《佛法修学概要》

请大家打开讲义第六十一页。 我们这一科讲到归敬三宝。前面讲到&#xff0c;我们在心中能够受持“常住”两个字&#xff0c;就能够远离三恶道。“常住”是针对生灭来说的&#xff0c;我们的心是没有常住的。凡夫的心深受感受的刺激&#xff0c;一接触外境就带动感受&#xff0…

Eclipse插件UCdetector清理无用JAVA代码

下载插件 UCDetector - Browse /ucdetector at SourceForge.net 目前最新版本是2017年的2.0.0 保存 Eclipse/dropins 重启 操作 在项目上右键

ESU毅速丨复杂结构模具可尝试3D打印随形水路

冷却水路对模具的生产效率影响巨大&#xff0c;一些结构复杂、骨位深的模具常规水路加工困难且冷却效果不理想&#xff0c;这时可尝试3D打印来制造水路。3D打印技术可以制造出具有复杂内部结构和任意几何形状的部件&#xff0c;特别适合结构复杂、骨位深、薄壁等特征的模具水路…

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SO-GRU蛇群算法优化门控循环单元的数…

jdk、tomcat、mysql的安装windows项目部署

文章目录 1、安装jdk2、tomcat安装3、MySQL安装3、外部访问数据库 1、安装jdk 1.双击运行jdk-8u144进行一个安装 2.一直点击下一步&#xff0c;到修改路径那个地方把他的存放路径改到D盘 3.找到我们刚刚修改的那个路径点进bin目录然后复制该路径进行一个环境变量配置4.找到我的…

golang学习笔记——go语言多文件项目运行的四种方式

go语言多文件运行技巧 有两个源码文件的go语言项目如何运行? go.modmain.go Trie.go 如何直接运行go run main.go会提示找不到文件。 # 在windows10下运行 $ go run main.go # command-line-arguments .\main.go:6:9: undefined: Constructor是真的找不到文件吗。其实不是。…

锁定查询功能,完成查询后防止他人查询

查询者想要实现自己查询完成后&#xff0c;任何人都无法再次查询&#xff0c;发布者应该如何设置&#xff1f;易查分的【锁定查询功能】就可实现&#xff0c;本次就来介绍如何使用此功能。 &#x1f4cc;使用教程 &#x1f512;锁定查询功能介绍 ✅用户自主锁定&#xff1a;开启…

如何基于 Gin 封装出属于自己 Web 框架?

思路 在基于 Gin 封装出属于自己的 Web 框架前&#xff0c;你需要先了解 Gin 的基本用法和设计理念。 然后&#xff0c;你可以通过以下步骤来封装自己的 Web 框架&#xff1a; 封装路由&#xff1a;Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的&#xff0c;你可以根据自己…

观测云产品更新 | 日志、场景仪表板、监控器等

观测云更新 用户访问监测 &#xff08;RUM &#xff09; 公网 Dataway 支持 ip 转换成地理位置信息。 日志 > 查看器详情页 1、新增 BPF 网络日志采集及日志详情页&#xff0c;支持 Json 格式转化&#xff1b; 2、上述 1 中的日志详情页中新增可读的展示模式&#xff0c…