Docker之数据卷的使用

 🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《Docker之数据卷的使用》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

 

一、数据卷的简介

1. Docker数据管理

        Docker 提供了多种方式来管理容器中的数据,以确保数据的持久性和可靠性。以下是一些常见的 Docker 数据管理方式:

1.1 数据卷(Volumes)

        数据卷是 Docker 中最常用的数据管理方式之一。数据卷是容器与主机之间共享的持久化存储,独立于容器的生命周期。数据卷可以用于存储应用程序数据、配置文件等。容器可以通过挂载数据卷来访问和修改其中的数据。数据卷的好处包括数据的持久性、容器之间的共享数据,以及方便数据备份和恢复

# 创建数据卷
docker volume create my_volume

# 启动容器并挂载数据卷
docker run -d -v my_volume:/path/in/container my_image

1.2 绑定挂载(Bind Mounts)

        绑定挂载允许将主机文件系统上的特定路径挂载到容器内的路径。这种方式可以用于在容器中访问主机上的文件或目录,也可以用于在主机和容器之间实现数据共享。

# 启动容器并使用绑定挂载
docker run -d -v /host/path:/container/path my_image

1.3 匿名卷

        Docker 允许在容器中创建匿名卷,这些卷不会直接与主机上的文件系统关联,而是存储在 Docker 管理的卷中。这样可以确保容器的数据在主机上是相对隔离的

# 启动容器并使用匿名卷
docker run -d -v /container/path my_image

1.4 数据卷容器

        可以创建一个专门用于存储数据的容器,其他容器通过挂载这个容器的数据卷来实现数据共享。这样的容器通常被称为数据卷容器。

# 创建数据卷容器
docker create -v /data --name my_data_container my_image

# 启动应用容器,并挂载数据卷容器
docker run --volumes-from my_data_container another_image

 1.5 Docker Compose

        Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose 文件,可以方便地定义多个服务、容器、网络和数据卷,并一起管理它们的生命周期

version: '3'
services:
  web:
    image: my_web_app
    volumes:
      - my_volume:/app/data

volumes:
  my_volume:

         总之,这些数据管理方式可以根据应用程序的需求进行选择和组合。使用适当的数据管理方式有助于确保容器中的数据持久、可靠、易于备份和恢复。

2.  数据卷的简介

2.1 数据卷的关键特性

Docker数据卷的一些关键特性
关键特性说明
持久性数据卷中的数据是持久的,即使容器被删除,数据卷依然存在。这使得数据可以在容器之间共享,而不受容器生命周期的限制。
独立于容器数据卷是独立于容器的实体,它可以被多个容器挂载和共享。这种独立性使得数据卷可以被用于存储共享数据、配置信息等。
挂载点在容器内,数据卷通过指定挂载点(Mount Point)来与容器中的路径关联。容器内的应用程序可以读写这个挂载点,实现对数据卷中数据的访问。
主机和容器之间的数据传递数据卷可以用于在主机和容器之间传递数据。通过挂载主机上的路径到容器内,可以实现主机和容器之间的数据共享。

2.2 数据卷的一些基本使用方式

创建数据卷
docker volume create my_volume
启动容器并挂载数据卷
docker run -d -v my_volume:/path/in/container my_image
查看数据卷信息
docker volume inspect my_volume

3. 数据卷容器简介

3.1 数据卷容器的一些关键特性

Docker数据卷的一些关键特性
关键特性说明
持久性数据卷中的数据是持久的,即使容器被删除,数据卷依然存在。这使得数据可以在容器之间共享,而不受容器生命周期的限制。
独立于容器数据卷是独立于容器的实体,它可以被多个容器挂载和共享。这种独立性使得数据卷可以被用于存储共享数据、配置信息等。
挂载点在容器内,数据卷通过指定挂载点(Mount Point)来与容器中的路径关联。容器内的应用程序可以读写这个挂载点,实现对数据卷中数据的访问。
主机和容器之间的数据传递数据卷可以用于在主机和容器之间传递数据。通过挂载主机上的路径到容器内,可以实现主机和容器之间的数据共享。3.2 s

3.2 数据卷容器的基本使用

创建数据卷容器 
docker create -v /data --name my_data_container my_image
启动其他容器并挂载数据卷容器
docker run --volumes-from my_data_container -d another_image
查看数据卷容器信
docker inspect my_data_container

二、实用演示

1. 数据卷挂载

        我们创建一个容器并且进入到我们的容器中,在容器中创建一个文件并且编写其内容在里面

 

        然后我们按住ctrl+d退出容器,然后删除所有的容器,再重新创建一个一样的容器。 

         由上图可知我们在新建的一个容器中并没有我们之前在容器中新建的a.txt文件,因为每个容器的数据都是独立的,而且数据跟随者容器的生命周期的。

         首先我们先确保我们有tomcat镜像,没有的话我们输入指令docker pull tomcat 版本执行进行拉取。

         我们用tomcat的镜像创建一个容器

         我们本机的网页上去访问我们Docker中的服务器,如果访问不了需要我们开放端口号

指令:firewall-cmd --zone=public --add-port=8080/tcp     //开放对应端口

           firewall-cmd reload    //刷新防火墙

我们在tomcat首页可以进行项目发布,点击右侧的Manager App进行发布,但是我们的tomcat没有user.xml文件没有用户信息,因此我们需要添加其文件。  我们可以子外面编写好文件利用数据卷将其放到我们的tomcat中进行其覆盖。

         我们进入我们创建的tomcat容器中

       我们进入tomcat服务器中的webapps文件目录下,将我们的项目war通过第三方连接工具使用托拉拽的方式添加到里面。

        我们创建一个数据卷  

         挂载数据卷 :

在用 docker run 命令的时候,使用 -- mount 标记来将 数据卷 挂载到容器里。在一次 docker
run 中可以挂载多个 数据卷

 

         我们新建一个窗口进行瓜挂载同一个数据卷,进入其生成的数据卷的文件夹

         我们在c3中的testdir中新建一个文件,我们进入到c2的testdir中进行查看

         由此可知数据卷的数据是共享的,我们将所有的容器删除掉,我们切换到v1的目录下,将war包拖至该目录下。

        我们再执行命令将数据卷的内容弄到指定的目录下。 是一整个目录的替换

 

         我们再去访问虚拟机的tomcat。因为我们的文件覆盖了

 

         因为我们导入的项目包时war包,因此会自动给我们解压,我们可以直接在网页进行访问。

2. 目录挂载

        去除容器和数据卷

          我们在根目录下创建一个文件夹用于实现目录挂载

         切入到该文件中,将我们的war包放入到文件夹中

 

         接下来进行目录挂载。

 

         我们再去网页访问8080

         再去访问我们的项目

         /soft直接将webapps文件替换掉了。我们去除所有的容器,执行下述指令:

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

 

        我们再访问项目和服务器  


 🎉🎉本期的博客分享到此结束🎉🎉

📚📚各位老铁慢慢消化📚📚

🎯🎯下期博客博主会带来新货🎯🎯

🎁三连加关注,阅读不迷路 !🎁

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

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

相关文章

《GreenPlum系列》GreenPlum初级教程-03GreenPlum系统管理

文章目录 第三章 GreenPlum系统管理1.关于GreenPlum数据库发布版本号2.启动和停止GreenPlum数据库2.1 启动数据库2.2 重启数据库2.3 仅重新载入配置文件更改2.4 停止GreenPlum数据库2.5 停止客户端进程 3.GreenPlum数据库状态查询4.访问GreenPlum数据库4.1 数据库会话参数4.2 支…

基于STM32和ESP8266的物联网应用开发与实现

基于STM32和ESP8266的物联网应用开发与实现可以实现智能家居、智能工业、环境监测等多种应用,它将结合STM32微控制器的实时控制能力和ESP8266无线通信模块的WiFi连接能力。在本文中,我们将介绍如何设计和实现这样的物联网应用,并提供相关的代…

使用 Github、Hugo 搭建个人博客

Hugo 静态网站构建手册:https://jimmysong.io/hugo-handbook/ 关键字:开源 博客 框架 1、GitHub Pages 官网:https://pages.github.com/ 文档:https://docs.github.com/zh Github Pages 简介 Websites for you and your project…

java多线程(并发)夯实之路-线程池深入浅出

线程池 Thread Pool:线程池,存放可以重复使用的线程(消费者) Blocking Queue:阻塞队列,存放等待执行的任务(生产者) poll方法(有时限地获取任务)相对take注…

【iOS】数据存储方式总结(持久化)

在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式(数据持久化) 根据要存储的数据大小、存储数据以及…

mac 使用brew卸载node

1.查看当前的node版本 node -v 2.查看使用brew 安装的版本,可以看到本机装了14、16、18版本的node brew search node 3.卸载node brew uninstall node版本号 --force 如分别删除14、16、18版本的node命令如下 brew uninstall node14 --force brew uninstall no…

漏洞分析|Cacti命令执行漏洞 (CVE-2022-46169)

1.漏洞描述 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具,可为用户提供强大且可扩展的操作监控和故障管理框架。 该漏洞存在于remote_agent.php文件中,未经身份验证的恶意攻击者可以通过设置HTTP_变量…

UE4工程升级UE5教程及注意事项

原文链接:https://mp.weixin.qq.com/s/vSVu0VsNub0J62Nz7vM6cA虚幻引擎5迁移指南 | 虚幻引擎5.3文档 (unrealengine.com) 官方教程应该是从英文直接翻译过来的,过多词汇没修改,本篇重新整理修改一下,供各位参考。 本教程介绍&…

Java8常用新特性

目录 简介 1.默认方法 2..Lambda表达式 3.Stream API 4.方法引用 5.Optional类 简介 Java 8是Java编程语言的一个重要版本,引入了许多令人兴奋和强大的新特性。这些特性使得Java程序更加现代化、灵活和高效。让我们一起来探索一些Java 8的常用新特性吧&#…

达摩研究院Paraformer语音识别-中文-通用-16k

原文:https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/readme_cn.md FunASR软件包路线图 English Version(docs) FunASR是由阿里巴巴通义实验室语音团队开源的一款语音识别基础框架,集成了语音端点检测、语…

FlinkCDC的分析和应用代码

前言:原本想讲如何基于Flink实现定制化计算引擎的开发,并以FlinkCDC为例介绍;发现这两个在表达上不知以谁为主,所以先分析FlinkCDC的应用场景和技术实现原理,下一篇再去分析Flink能在哪些方面,做定制化计算…

【动态规划】LeetCode-42. 接雨水

42. 接雨水。 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1…

OpenCV-22高斯滤波

一、高斯函数的基础 要理解高斯滤波首先要直到什么是高斯函数,高斯函数是符合高斯分布的(也叫正态分布)的数据的概率密度函数。 高斯函数的特点是以x轴某一点(这一点称为均值)为对称轴,越靠近中心数据发生…

css——文字实现渐变色的两种方案

&#xff08;一&#xff09;通过设置color、background-image及background-clip实现文字颜色渐变 <template><span class"title">文字实现渐变色的两种方案</span> </template><style> .title {color: transparent;background-image:…

Windows 项目从0到1的部署

目录 一. 安装jdk 1.1 安装jdk 1.2 配置jdk的环境配置jdk 1.3 配置成功 二. 配置tomcat 2.1 启动tomcat 2.2 防火墙设置 三. 安装MySQL 3.1 安装步骤 3.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一. 安装jdk 这里给大家准备好了jdk和…

【Python】使用Opencv裁剪指定区域,再重构大小和保存示例

在Python中&#xff0c;使用OpenCV库可以很方便地截取图像的某一区域&#xff0c;然后尺寸重构&#xff0c;最后保存为新的图像文件。以下是一个示例代码&#xff0c;演示如何实现这一操作&#xff1a; import cv2# 读取图像 img cv2.imread(img.jpg)# 定义截取的区域&#x…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

Java面试之虚拟机

1、前言 本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。 Java 被设计成允许应用程…

【模型评估 07】过拟合与欠拟合

在模型评估与调整的过程中&#xff0c;我们往往会遇到“过拟合”或“欠拟合”的情况。如何有效地识别“过拟合”和“欠拟合”现象&#xff0c;并有针对性地进行模型调整&#xff0c;是不断改进机器学习模型的关键。特别是在实际项目中&#xff0c;采用多种方法、从多个角度降低…

【自控实验】3. 带有饱和非线性环节控制系统相平面分析

本科课程实验报告&#xff0c;有太多公式和图片了&#xff0c;干脆直接转成图片了 仅分享和记录&#xff0c;不保证全对 实验内容&#xff1a; 有无非线性环节的相轨迹对比&#xff0c;并求超调量。 在输入单位阶跃信号Xsr时&#xff0c;用示波器观察和记录系统输入饱和非线…