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

news2024/9/29 3:35:33

目录

一、数据管理

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 t 1   \
  3. -p 8080: 8080  \
  4. --mount source =v 1,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 t 1  \
  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.coloradmin.cn/o/1379237.html

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

相关文章

AVL树(Java)

目录 一、什么是AVL树 二、AVL树的实现 AVL树的节点 AVL树的插入 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 AVL树的验证 三、AVL树的性能分析 一、什么是AVL树 在了解什么是AVL树之前&#xff0c;我们先回顾二叉搜索树的概念 二叉搜索树&#xff08;二叉排序…

使用递归将list转换成tree

在产品研发时遇到这样一个问题&#xff0c;对于省市区县这类三级联动的数据&#xff0c;前端插件需要一次把数据全部返回&#xff0c;单纯的使用接口查询字节的没办法满足要求。 如果一次把数据全部返回&#xff0c;前端使用起来很麻烦需要一条一条的进行查找。 常规的使用方…

基于SPI的插件式开发实现方案之@AutoService+ServiceLoader介绍及Dolphinscheduler中的实际应用

1.插件化开发概述 插件化开发模式正在很多编程语言或技术框架中得以广泛的应用实践&#xff0c;比如大家熟悉的jenkins&#xff0c;docker可视化管理平台rancher&#xff0c;以及日常编码使用的编辑器idea&#xff0c;vscode等。 实现服务模块之间解耦的方式有很多&#xff0…

【漏洞复现】Apache Tomcat AJP文件包含漏洞(CVE-2020-1938)

Nx01 产品简介 Apache Tomcat 是一个免费的开源 Web 应用服务器&#xff0c;在中小型企业和个人开发用户中有着广泛的应用。 Nx02 漏洞描述 默认情况下&#xff0c;Apache Tomcat会开启AJP连接器&#xff0c;由于AJP服务&#xff08;8009端口&#xff09;存在文件包含缺陷&…

Spring Boot - Application Events 的发布顺序_AvailabilityChangeEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的&#xff0c;它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦&#…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子管理实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

数据仓库研发规范

数据仓库研发规范 本文将介绍数据仓库研发规范的阶段规划、角色职责和整体流程。 在大数据时代&#xff0c;规范地进行数据资产管理已成为推动互联网、大数据、人工智能和实体经济深度融合的必要条件。贴近业务属性、兼顾研发各阶段要点的研发规范&#xff0c;可以切实提高研…

Handsfree_ros_imu:ROS机器人IMU模块的get_imu_rpy.py文件学习记录

上一篇博客写了关于Handsfree_ros_imu&#xff1a;ROS机器人IMU模块ARHS姿态传感器&#xff08;A9&#xff09;Liunx系统Ubuntu20.04学习启动和运行教程&#xff1a; https://blog.csdn.net/qq_54900679/article/details/135539176?spm1001.2014.3001.5502 这次带来get_imu_r…

解决虚拟机的网络图标不见之问题

在WIN11中&#xff0c;启动虚拟机后&#xff0c;发现网络图标不见了&#xff0c;见下图&#xff1a; 1、打开虚拟机终端 输入“sudo server network-manager stop”&#xff0c;停止网络管理器 输入“cd /回车” &#xff0c; 切换到根目录 输入“cd var回车” &#xff0c;…

从零开始怎么做好产品宣传册

​随着市场竞争的日益激烈&#xff0c;产品宣传册作为企业与消费者之间的桥梁&#xff0c;其重要性日益凸显。一份优秀的宣传册不仅能提升企业的品牌形象&#xff0c;还能帮助企业更好地推广产品&#xff0c;吸引潜在客户。然而&#xff0c;很多企业在制作宣传册时却常常无从下…

webpack原理和逆向实战

文章目录 什么是webpackwebpack基本原理webpack代码分析webpack代码抠取webpack全模块自吐webpack自动扣取总结 什么是webpack webpack是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)&#xff0c;负责分析翻译压缩打包代码。 上面的官网的一张示例图。 web…

了解及掌握二维数组

第一题: 题目&#xff08;单对角线和&#xff09;&#xff1a; 分析&#xff1a; 用结构体的话&#xff0c;太麻烦了&#xff0c;专业一点&#xff0c;用本该属于它的知识点来解决它。 代码&#xff1a; #include <iostream> using namespace std; int main() { int…

设计模式—行为型模式之状态模式

设计模式—行为型模式之状态模式 状态&#xff08;State&#xff09;模式&#xff1a;对有状态的对象&#xff0c;把复杂的“判断逻辑”提取到不同的状态对象中&#xff0c;允许状态对象在其内部状态发生改变时改变其行为。 状态模式包含以下主要角色&#xff1a; 环境类&am…

如何使用iPad通过Code App+cpolar实现公网地址远程访问vscode

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 1. 在iPad下载Code APP2.安装cpolar内网穿透2.1 cpolar 安装2.2 创建TCP隧道 3. iPad远程vscode4. …

基于多智能体点对点转换的分布式模型预测控制

matlab2020正常运行 基于多智能体点对点转换的分布式模型预测控制资源-CSDN文库

资源三角形

美国哈佛大学的研究小组提出了著名的资源三角形&#xff1a;没有物质&#xff0c;什么也不存在&#xff1b;没有能量&#xff0c;什么也不会发生&#xff1b;没有信息&#xff0c;任何事物都没有意义。物质、能量和信息是相互有区别的&#xff0c;是人类社会赖以生存、发展的三…

7 - MySQL主从同步|主从同步模式

MySQL主从同步&#xff5c;主从同步模式 MySQL主从同步主从同步介绍主从同步工作过程主从同步结构模式配置主从同步一主一从同步结构一主多从同步结构主从从同步结构主主同步结构 主从同步模式主从同步结构模式复制模式 MySQL主从同步 主从同步介绍 存储数据的服务结构 主服务…

数据结构与算法教程,数据结构C语言版教程!(第三部分、栈(Stack)和队列(Queue)详解)五

第三部分、栈(Stack)和队列(Queue)详解 栈和队列&#xff0c;严格意义上来说&#xff0c;也属于线性表&#xff0c;因为它们也都用于存储逻辑关系为 "一对一" 的数据&#xff0c;但由于它们比较特殊&#xff0c;因此将其单独作为一章&#xff0c;做重点讲解。 使用栈…

vscode+opencv基础用法学习1

案例1&#xff1a;读取图片信息 如果是使用云服务器的话&#xff0c;由于图形界面的问题&#xff0c;使用cv::show来显示图片会报错 // 图片的读取和显示 // 导入opencv头文件 #include "opencv2/opencv.hpp" #include <iostream>int main(int argc, char** …

数据仓库 Apache Hive

一、数据分析 1、数据仓库 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。 数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持&#xff08…