docker中使用Volume完成数据共享

情景概述

在一个docker中,部署两个MySQL容器,假如它们的数据都存储在自己容器内部的data目录中。这样的存储方式会有以下问题:

1.无法保证两个MySQL容器中的数据同步。

2.容器删除后,数据就会丢失。

基于以上问题,容器中的数据不能存储在容器内部。而是应该单独剥离出来,这时, Volume就派上用场了。

Volume是什么?

Volume就是在物理机上单独开辟的一个存储空间,以上面的情况为例,作为MySQL容器内部就不再进行数据存储。所有数据都存储在物理机的路径中,然后再通过Volume挂载到容器中,这样就形成了数据共享。两个MySQL容器共享同一份数据。当Volume数据变化,容器内部使用的时候就会跟随变化。

这样的方式可以解决多个容器数据共享和数据管理问题。

Volume使用案例

目标是启动三个tomcat容器实例,三个容器访问同一份文件,完成浏览器的访问。

当更改文件内容后,页面显示随之变化。

准备工作

1.需要先在docker中拉取tomcat镜像

docker pull tomcat

拉取tomcat镜像的作用是为页面访问提供中间件,关于tomcat更多操作,参考之前的文章:

Docker快速安装Tomcat-CSDN博客

2.将准备好的文件放到/usr/local路径下

webapps文件夹中的结构如下: 

index.html内容为:

I'm Volume Page??

创建容器并挂载数据卷

docker create --name webpage -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat /bin/true

创建一个名称为webpage的容器,容器基于tomcat镜像,只创建容器,但不运行。

-v 设置本地磁盘和容器内目录的对应关系(挂载数据卷),即/usr/local/webapps目录中的文件映射到/usr/local/tomcat/webapps目录中。

启动三个tomcat容器

docker run -p 8002:8080 --volumes-from webpage --name tomcat1 -d tomcat

docker run -p 8003:8080 --volumes-from webpage --name tomcat2 -d tomcat

docker run -p 8004:8080 --volumes-from webpage --name tomcat3 -d tomcat

启动一个名称为tomcat1的容器,容器基于tomcat镜像,这个容器外部访问端口为8002,对应到tomcat容器内部端口8080。

--volumes-from基于指定容器设置映射关系。

成功启动三个容器,容器名称分别是tomcat1、tomcat2、tomcat3

这三个容器因为都使用--volumes-from关键字设置了容器映射的路径,所以它们都对应到了物理机的/usr/local/webapps路径中。

查看容器挂载信息

docker inspect 容器编号

 

在输出结果中找到Mounts的节点,就可以看到挂载的信息。 

浏览器访问三个实例

访问三个端口,都可以正常显示。三个端口对应三个tomcat实例,通过Volume共享的方式,共享了同一份文件,这份数据是独立于容器的,在容器外部,只是通过命令进行了文件的映射。

这样做最大的好处是,当页面要进行修改操作,只需要改物理机上的文件就可以,不需要修改容器中的任何内容。

修改文件

下面进行演示,把index.html文件进行修改,然后再次访问。

 修改完文件后,需要重启容器。命令为:docker restart 容器ID或者容器名称

docker restart tomcat1

docker restart tomcat2

docker restart tomcat3

容器重启完毕后,再次访问tomcat实例

 

 

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

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

相关文章

vue——滑块验证

1. 介绍 1.1 简介 基于滑动式的验证码,免于字母验证码的繁琐输入 用于网页注册或者登录 1.2 来源说明 vue使用滑块验证功能,是基于vue-monoplasty-slide-verify这样的一个开源项目,进行实现的,这是这个开源项目的网址传送阵&#…

如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?

如何很快将文件转换成另外一种编码格式? 利用VS Code右下角的"选择编码"功能,选择"通过编码保存"可以很方便将文件转换成另外一种编码格式。尤其,在测试w/ BOM或w/o BOM, 或者ANSI编码和UTF编码转换,特别方便。VS文件另…

Unity3D仿星露谷物语开发16之角色拾取道具

1、目标 当角色经过道具时会拾取道具放到库存列表中,此时道具消失并打印库存信息。 2、创建新的Enum 在Assets -> Scripts -> Enums -> Enum.cs中添加库存位置相关的信息。 public enum InventoryLocation {player, // 在角色手中chest, // 在箱子里co…

UE4_用户控件_3_用户控件输入数据的方法

祝愿大美兰陵越来越好! 一、效果展示: 二、先制作一个角色 1、新建个父类为pawn的蓝图类。更名为BP_Image_Character。 2、这个角色只是用于观察场景,并与场景中的物体相碰撞用的,所以不需要骨骼网格体, 3、但是我们…

文献阅读 | B. S. Carmo 2010

目录 一、文献名称二、原文地址三、ABSTRACT主要发现详细观察分岔分析雷诺数依赖性比较见解意义结论 四、IINTRODUCTION历史研究回顾计算研究近期研究进展研究空白与目的论文结构 一、文献名称 二、原文地址 研究目的:研究串列排列双圆柱体周围流场中的次级不稳定性…

vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果

Vue实现过程如下&#xff1a; <template><div ><p ref"dom_element" class"typing" :class"{over_fill: record_input_over}"></p></div> </template> <script setup> import {onMounted, ref} from…

如何安装适配pytorch版本的torchvision

一、对照版本 版本对照pytorch/vision: Datasets, Transforms and Models specific to Computer Vision 二、下载对应版本的torchvision 下载连接1download.pytorch.org/whl/torch_stable.html 下载连接2download.pytorch.org/whl/cu110/torch_stable.html 笔者认为1会比2更…

Leetcode打卡:我的日程安排表III

执行结果&#xff1a;通过 题目 732 我的日程安排表 III 当 k 个日程存在一些非空交集时&#xff08;即, k 个日程包含了一些相同时间&#xff09;&#xff0c;就会产生 k 次预订。 给你一些日程安排 [startTime, endTime) &#xff0c;请你在每个日程安排添加后&#xff0c;…

TI毫米波雷达原始数据解析之Lane数据交换

TI毫米波雷达原始数据解析之Lane数据交换 背景Lane 定义Lane 确认确认LVDS Lane 数量的Matlab 代码数据格式参考 背景 解析使用mmWave Studio 抓取的ADC Data Lane 定义 芯片与DCA100之间的数据使用LVDS接口传输&#xff0c;使用mmWave Studio 配置过程中有一个选项是LVDS L…

redis7基础篇3 redis的集群模式3

一 集群模式 1.1 redis的集群模式 Redis集群模式&#xff0c;实现数据集在多个节点进行共享&#xff0c;支持多个master节点。 Redis集群支持多个master&#xff0c;每个master节点又可以挂载多个slave&#xff1b;由于cluster自带sentinel的故障转移机制&#xff0c;内置高…

【嵌入式硬件】直流电机驱动相关

项目场景&#xff1a; 驱动履带车&#xff08;双直流电机&#xff09;前进、后退、转弯 问题描述 电机驱动MOS管烧毁 电机驱动采用IR2104STRH1R403NL的H桥方案&#xff08;这是修改之后的图&#xff09; 原因分析&#xff1a; 1.主要原因是4路PWM没有限幅&#xff0c;修改…

部署项目添加工程名的步骤

1.首先要在router下进行工程名添加 2.其次在vue.config.js中添加publicpath 3.在nginx配置文件中 location /my-app/ {try_files $uri $uri/ /my-app/index.html; }

SCAU期末笔记 - 数据库系统概念往年试卷解析

数据库搞得人一头雾水&#xff0c;题型太多太杂&#xff0c;已经准备摆烂了。就刷刷往年试卷&#xff0c;挂不挂听天由命。 2019年 Question 1 选择题 1. R ∩ S R∩S R∩S等于一下哪个选项&#xff1f; 画个文氏图秒了 所以选A. R ∩ S R − ( R − S ) R∩SR-(R-S) R∩…

【竞技宝】CS2:HLTV 2024 TOP11-w0nderful

北京时间2025年1月4日&#xff0c;HLTV年度选手排名正在持续公布中&#xff0c;今日凌晨正式公布了今年的TOP11为NAVI战队的w0nderful。 选手简介 w0nderful是一名来自于乌克兰的CS选手&#xff0c;现年20岁&#xff0c;目前在比赛中司职狙击手。w0nderful于2020年开启了自己的…

基层医联体医院患者历史检验检查数据的快速Python编程分析

​​​​​​​ 一、引言 1.1 研究背景与意义 在当今数字化医疗时代,医疗数据呈爆炸式增长,涵盖患者的基本信息、病史、检验检查结果、治疗方案等各个维度。这些海量且复杂的数据蕴含着巨大价值,为精准医疗决策提供了关键依据。通过对患者历史检验检查数据的深入对比分析…

Java SpringBoot使用Apache POI导入导出Excel文件

点击下载《Java SpringBoot使用Apache POI导入导出Excel文件(源代码)》 1. Apache POI 简介 Apache POI 是一个强大的 Java 库&#xff0c;用于处理 Microsoft Office 文档&#xff0c;包括 Excel 文件&#xff08;.xls 和 .xlsx&#xff09;。在 Java Spring Boot 项目中&am…

AWS 申请证书、配置load balancer、配置域名

申请AWS证书 点击 request 申请完证书&#xff0c;AWS 会验证你对于域名的所有权&#xff0c;有两种方式&#xff0c;DSN 验证和邮箱验证。 这里说一下DSN 验证&#xff0c;上图中 Domains 中有CNAME name 和 CNAME value 。 在domain 网站中添加一个CNAME DSN 项&#xff0c;…

三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇

一、引言 1.1 研究背景与意义 随着医疗卫生体制改革的不断深化以及信息技术的飞速发展,三甲医院评审作为衡量医院综合实力与服务水平的重要标准,对数据集成与共享提出了更为严苛的要求。在传统医疗模式下,医院内部各业务系统往往各自为政,形成诸多“信息孤岛”,使得数据…

RIP配置实验

RIP配置实验 案例简介 天一公司下属三个分公司&#xff0c;属于不同的地区&#xff0c;三个公司之间用路由器连接&#xff0c;路由器名称分别为分别为 Router0、Router1、Router2&#xff0c;请把一公司的部门pc0,通过二公司路由器&#xff0c;连接三公司的部门pc1,公司之间通…

从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)

此文为系列文章&#xff0c;此系列主要讲解RTSP客户端的拉流及播放&#xff0c;文章持续更新&#xff0c;会从rtsp的基本协议讲起&#xff0c;如何一步步实现音视频的拉流过程&#xff0c;包括一系列涉及到的协议&#xff0c;rtsp&#xff0c;sdp&#xff0c; rtp&#xff08;本…