docker中使用Volume完成数据共享

news2025/1/7 21:53:13

情景概述

在一个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.coloradmin.cn/o/2272863.html

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

相关文章

Mac软件介绍之录屏软件Filmage Screen

软件介绍 Filmage Screen 是一款专业的视频录制和编辑软件,适用于 Mac 系统 可以选择4k 60fps,可以选择录制电脑屏幕,摄像头录制,可以选择区域录制。同时也支持,简单的视频剪辑。 可以同时录制电脑麦克风声音 标准…

【Redis经典面试题七】Redis的事务机制是怎样的?

目录 一、Redis的事务机制 二、什么是Redis的Pipeline?和事务有什么区别? 三、Redis的事务和Lua之间有哪些区别? 3.1 原子性保证 3.2 交互次数 3.3 前后依赖 3.4 流程编排 四、为什么Lua脚本可以保证原子性? 五、为什么R…

【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 1. 相关排序和查找算法的原理 2. C 类与成员函数的定义 3. 数组作为类的成员变量的处理 4. 函数参数传递与返回值处理 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务: 将直接插入排序、直接选择排序、冒泡…

[开源]自动化定位建图系统

系统状态机: 效果展示: 1、 机器人建图定位系统-基础重定位,定位功能演示 2、 机器人建图定位系统-增量地图构建,手动回环检测演示 3、敬请期待… 开源链接: 1、多传感器融合里程计 https://gitee.com/li-wenhao-lw…

简单的jmeter数据请求学习

简单的jmeter数据请求学习 1.需求 我们的流程服务由原来的workflow-server调用wfms进行了优化,将wfms服务操作并入了workflow-server中,去除了原来的webservice服务调用形式,增加了并发处理,现在想测试模拟一下,在一…

conda/pip基本常用命令理解与整理

最近配置了两轮pytorch环境,由于要频繁用到各种conda和pip命令,所以再此整理一下。 文章目录 前言:conda虚拟环境总结与解读Conda和pip的理解区别和联系命令格式 conda环境命令查看创建和删除导出与导入激活和退出 包管理命令安装和删除文件批…

Maven 详细配置:Maven settings 配置文件的详细说明

Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件&#x…

Unity-Mirror网络框架-从入门到精通之Chat示例

文章目录 前言Chat聊天室Authentication授权ChatAuthenticatorChat示例中的授权流程聊天Chat最后 前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻…

复杂园区网基本分支的构建

目录 1、各主机进行网络配置。2、交换机配置。3、配置路由交换,进行测试。4、配置路由器接口和静态路由,进行测试。5、最后测试任意两台主机通信情况 模拟环境链接 拓扑结构 说明: VLAN标签在上面的一定是GigabitEthernet接口的&#xff0c…

这是什么操作?强制迁移?GitLab 停止中国区用户访问

大家好,我是鸭鸭! 全球知名代码托管平台 GitLab 发布通告,宣布不再为位于中国大陆、香港及澳门地区的用户提供访问服务,并且“贴心”建议,可以访问极狐 GitLab。 极狐 GitLab 是一家中外合资公司,宣称获得…

CDP集成Hudi实战-spark shell

[〇]关于本文 本文主要解释spark shell操作Hudi表的案例 软件版本Hudi1.0.0Hadoop Version3.1.1.7.3.1.0-197Hive Version3.1.3000.7.3.1.0-197Spark Version3.4.1.7.3.1.0-197CDP7.3.1 [一]使用Spark-shell 1-配置hudi Jar包 [rootcdp73-1 ~]# for i in $(seq 1 6); do s…

设计模式学习[15]---适配器模式

文章目录 前言1.引例2.适配器模式2.1 对象适配器2.2 类适配器 总结 前言 这个模式其实在日常生活中有点常见,比如我们的手机取消了 3.5 m m 3.5mm 3.5mm的接口,只留下了一个 T y p e − C Type-C Type−C的接口,但是我现在有一个 3.5 m m 3.…

数据挖掘——数据预处理

数据挖掘——数据预处理 数据预处理数据预处理 ——主要任务数据清洗如何处理丢失的数据如何处理噪声数据如何处理不一致数据 数据集成相关分析相关系数(也成为皮尔逊相关系数)协方差 数据规约降维法:PCA主成分分析降数据——抽样法数据压缩 数据预处理 数据预处理…

Unity-Mirror网络框架-从入门到精通之CCU示例

文章目录 前言什么是CCU?测试结果最后 前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文…

如何在 Ubuntu 22.04 上安装 Nagios 服务器教程

简介 在本教程中,我们将解释如何在 Ubuntu 22.04 上安装和配置 Nagios,使用 Apache 作为 Web 服务器,并通过 Let’s Encrypt Certbot 使用 SSL 证书进行保护。 Nagios 是一个强大的监控系统,它可以帮助组织在 IT 基础设施问题影…

大语言模型训练所需的最低显存,联邦大语言模型训练的传输优化技术

联邦大语言模型训练的传输优化技术 目录 联邦大语言模型训练的传输优化技术大语言模型训练所需的最低显存大语言模型训练所需的最低显存 基于模型微调、压缩和分布式并行处理的方法,介绍了相关开源模型及技术应用 核心创新点 多维度优化策略:综合运用基于模型微调、模型压缩和…

Javascript算法——贪心算法(一)

贪心算法详解(JavaScript)(局部最优->全局最优) 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下的最优选择(局部最优)的算法设计方法。通过局部最优解的累积&…

141.《mac m系列芯片安装mongodb详细教程》

文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…

【ArcGISPro/GeoScenePro】裁剪和打包栅格数据

检查并处理扫描地图 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 使用标准相机或扫描仪创建的数字影像通常存储在 RGB 颜色模型中,这意味着这些影像将由红色、绿色和蓝色三个栅格组成。 此扫描地图在提供给您之前已在坐标系…

【C++】B2109 统计数字字符个数

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述与输入输出要求题目:统计数字字符个数样例输入输出 💯方法分析与代码实现方法 1:使用 fgets 读取输入并手动判断数字字符代码实…