当前位置: 首页 > news >正文

Docker学习_存储篇

当以默认的方式创建容器时,容器中的数据无法直接和其他容器或宿主机共享。为了解决这个问题需要学习一些Docker 存储卷的知识。

Docker提供了三种存储的方式。

  • bind mount共享宿主机文件目录
  • volume共享docker存储卷
  • tmpfs mount共享内存

volume*

volume方式是容器间数据分享的推荐方式。它的运行和管理都是由docker负责。

添加

此处的添加可以分为两层意思,第一层如何添加一个volume,第二层如何向容器中添加一个volume。

添加一个volume

利用`docker volume create`指令创建一个volume,当不指定volume名称时,docker会以一个volume id位置volume的名称。

如下:

当指定volume名称时,docker将创建一个指定名称的volume。

当volume名称相同时,docker不会创建一个新的,而是利用之前创建的volume。

向容器中添加volume

向容器中有两种选项可供选择一种是利用--mount选项,另一种是利用-v选项。

--mount方式

--mount选项支持详细的设定绑定方式,type设定绑定的类型,source设定卷名称,target设定绑定到容器的哪个目录下。

-v方式

-v选项支持简洁的设定绑定方式,利用:作为分隔,可以分成三个部分。第一个部分为volume的名称,当使用匿名volume时可以忽略。第二个部分为绑定到容器的哪个目录下。第三个部分为一些选项。

查询

查看有哪些volume

利用`docker volume ls`指令可以查看系统中所有的volume情况。

查看详细信息

利用`docker volume inspect <volumeName>`指令可以查看某个volume的详细信息。

删除volume

删除volume的前提条件是没有容器正在使用(不管容器是否在运行)该volume,否则会报错无法删除volume。

利用`docker volume rm <volumeName>`指令可以删除指定的volume名称。

备份&还原

备份

就是将容器中volume绑定的目录进行tar打包。

// 将容器中volume绑定的目录打包成压缩文件
tar cfv backup.tar ./mysql
// 将压缩文件转移到宿主机中
docker cp <contianerId>:<tarFilePath> <hostPath>

还原

就是创建一个新的绑定匿名volume的容器,并将tar解压到指定的目录下即可

// 创建一个绑定目录一致的匿名volume容器
docker container create -e MYSQL_ROOT_PASSWORD=SECRET -v /app mysql:5.7// 将宿主机中backup.tar文件复制到容器的绑定目录下
docker cp backup.tar <contianerId>:<path>// 进入容器,并将backup.tar文件解压
docker exec -it <containerId> bash
cd <path>
tar xvf backup.tar

bind mount

bind mount是宿主机和容器之间共享数据的方式。它的作用就是将宿主机中的特定目录或文件绑定到容器的特定目录中。

添加

  • 此处向容器中添bind mount的方式和添加volume的方式非常相似,不同点在于绑定的不是volume名称而是一个宿主机中特定的目录。同样也存在--mount和-v两种方式,向容器中绑定共享的目录。
## 利用--mount方式进行添加
docker container create-e MYSQL_ROOT_PASSWORD=SECRET --mount type=bind,source=<hostPath>,target=<containerPath>mysql:5.7## 利用-v方式进行添加
docker container create-e MYSQL_ROOT_PASSWORD=SECRET-v <hostPath>:<containerPath>mysql:5.7

查询

此处也是通过docker container inspect <containerID>指令查看某个容器下Mounts的信息来查看其共享数据的信息。

Volume和bind mount比较

不同点bind mountvolume
volume位置可任意指定/var/lib/docker/volumes/下
对已有mount point影响隐藏并替换为volume原有数据复制到volume
是否支持单个文件支持不支持,只能是目录
权限控制可设置为只读,默认为读写权限无控制,均为读写权限
移植性移植性弱,与host path绑定移植性强,无须指定host目录

tmpfs mount

tmpfs表示将信息临时存储起来,并保存在宿主机的内存中。需要注意的两点:

  • 此处保存的数据无法持久化,只能是临时存储
  • 目前只支持宿主机是linux系统

添加

也是通过--mount的方式进行添加,不同点在于其类型为tmpfs,且没有source项

docker container create--mount type=tmpfs,target=/app-e MYSQL_ROOT_PASSWORD=SECRETmysql:5.7

容器间共享数据的方法

bind mount方式

就是将需要共享的数据存储在宿主机特定目录下,然后需要访问这部分数据的容器都通过bind mount绑定这个数据。

volume container方式

就是说创建一个专门为其他容器提供volume的容器,它可以是bind mount方式,也可以是volume方式。

## 创建一个volume container并绑定多个形式的共享数据docker container create-v ~/hostData:/hostData-v containerData:/containerData--name vc_data<image_name>

然后其他容器利用--volumes-from参数绑定到volume container上即可,这样所有这样创建的容器就都有了volume container一样的数据了。

## 创建与volume container共享数据的容器
docker container create--volumes-from <volume container name><image_name>

相关文章:

Docker学习_存储篇

当以默认的方式创建容器时&#xff0c;容器中的数据无法直接和其他容器或宿主机共享。为了解决这个问题需要学习一些Docker 存储卷的知识。 Docker提供了三种存储的方式。 bind mount共享宿主机文件目录volume共享docker存储卷tmpfs mount共享内存 volume* volume方式是容器…...

微信小程序获取当前日期时间

一、直接使用方式 在小程序中获取当前系统日期和时间&#xff0c;可直接拿来使用的常用的日期格式 //1. 当前日期 YYYY-MM-DDnew Date().toISOString().substring(0, 10)new Date().toJSON().substring(0, 10)//2. 当前日期 YYYY/MM/DDnew Date().toLocaleDateString()//3.…...

Unity关键词语音识别

一、背景 最近使用unity开发语音交互内容的时候&#xff0c;遇到了这样的需求&#xff0c;就是需要使用语音关键字来唤醒应用程序&#xff0c;然后再和程序做交互&#xff0c;有点像智能音箱的意思。具体的技术方案方面&#xff0c;也找了一些第三方的服务&#xff0c;比如百度…...

SpringBoot的配置文件——.yml和.properties

目录 1. Spring Boot 配置文件的使用场景 2. 配置文件的两种格式 2.0 特殊说明&#xff1a; 2.1 .properties 2.1.1 格式 2.2.2 缺陷 2.2.3 解决中文乱码的问题 2.2 .yml 2.2.3 格式 配置数据库连接 注意转义字符 ​编辑 ​编辑 配置null 配置对象 从.yml读取文件举例 Stud…...

Retrieve Anything To Augment Large Language Models

简介 论文主要介绍了一套通过对比学习和蒸馏学习的方法&#xff0c;来增强学习了embedding向量&#xff0c;然后能够在知识增强&#xff0c;长上下文建模&#xff0c;ICL和工具学习等方面来增强大模型能力。...

什么是面向对象编程

面向对象编程&#xff08;Object-oriented programming&#xff0c;简称OOP&#xff09;是一种编程范型&#xff0c;通过将数据和方法&#xff08;即属性和行为&#xff09;组织在一个单元中&#xff0c;以模拟现实世界中的实体或概念。在面向对象编程中&#xff0c;数据和方法…...

c++视觉处理----固定阈值操作:Threshold()函数,实时处理:二值化,反二值化,截断,设为零,反向设为零

固定阈值操作&#xff1a; Threshold()函数 cv::threshold() 函数是OpenCV中用于执行固定阈值二值化操作的函数。它可以用来将图像中的像素值根据用户定义的阈值转换为二进制值&#xff08;0或255&#xff09;&#xff0c;以便进行图像分割、物体检测和特征提取等任务。 cv::…...

KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(8)

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(7) 上一回讲到了drm_internal_framebuffer_create函数中的framebuffer_check函数中的drm_get_format_info函数,讲解了该函数的第一部分暨前一部分,本文讲解后一部分。为了便于理解以及理清脉络和当前所…...

【问题解决】Ubuntu 安装 SeisSol 依赖 easi 报错解决: undefined reference to `H5free_memory‘

兼职帮客户安装 SeisSol 时问题解决&#xff0c;安装 easi 这个报错卡了很久&#xff08;搞了一天&#xff09;&#xff0c;记录下&#xff0c;以备后用~ # 编译器问题 rootubuntu:/opt/easi# make -j install [ 4%] Building CXX object CMakeFiles/easi.dir/src/component/…...

循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)rust解法

输入整数a和b&#xff08;0≤a≤3000&#xff0c;1≤b≤3000&#xff09;&#xff0c;输出a/b的循环小数表示以及循环节长度。例如a5&#xff0c;b43&#xff0c;小数表示为0.(116279069767441860465)&#xff0c;循环节长度为21。 解法 就是模拟竖式除法 use std::{collecti…...

[GAMES101]透视投影变换矩阵中为什么需要改变z值

一、问题提出 在GAMES101-Lecture4 Transformation Matrices 一节中&#xff0c;闫老师介绍了正交投影和透视投影。 在讲透视投影变换矩阵 M p e r s p → o r t h o M_{persp→ortho} Mpersp→ortho​时&#xff0c;同学们对矩阵中的z分量是变化的还是不变的有很多争论。即下…...

sklearn处理离散变量的问题——以决策树为例

最近做项目遇到的数据集中&#xff0c;有许多高维类别特征。catboost是可以直接指定categorical_columns的【直接进行ordered TS编码】&#xff0c;但是XGboost和随机森林甚至决策树都没有这个接口。但是在学习决策树的时候&#xff08;无论是ID3、C4.5还是CART&#xff09;&am…...

QT 数据库表格----QSqlTableModel

将数据库数据以表格的形式转化处理的方法很多&#xff0c;但我觉得QSqlTableModel这个model应算是非常好用的&#xff1b; msql.exec("create table alldata(照片,车牌号 "",入车时间,出车时间,金额,状态,看守人员);"); //创建表格 //msql 打开的数据库即Q…...

Vue_Bug Failed to fetch extension, trying 4 more times

Bug描述&#xff1a; 启动electron时出现Failed to fetch extension, trying 4 more times的问题 解决方法&#xff1a; 去src/background.js文件中进行代码注释工作 app.on(ready, async() > {// if (isDevelopment && !process.env.IS_TEST) {// // Install V…...

缩短从需求到上线的距离:集成多种工程实践的稳定框架 | 开源日报 No.55

zeromicro/go-zero Stars: 25.7k License: MIT go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性&#xff0c;经受了充分的实战检验。 go-zero 包含极简的 API 定义和生成工具 goctl&#xff0c;可以根据定义的 api 文件一键生成…...

基于秃鹰优化的BP神经网络(分类应用) - 附代码

基于秃鹰优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于秃鹰优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.秃鹰优化BP神经网络3.1 BP神经网络参数设置3.2 秃鹰算法应用 4.测试结果&#xff1a;5.M…...

C++笔记之std::future的用法

C笔记之std::future的用法 code review! 文章目录 C笔记之std::future的用法1.C中std::future和std::async总是一起出现吗&#xff1f;2.主要特点和用法3.一个完整的例子4.std::future 存放的是一个结果吗&#xff1f;5.cppreference——std::future 1.C中std::future和std::a…...

openssl学习——消息认证码原理

消息认证码原理 消息认证码&#xff08;Message Authentication Code, MAC&#xff09;是一种技术&#xff0c;它的原理是通过对消息和密钥进行特定的处理&#xff0c;生成一个固定长度的数据&#xff0c;这个数据就是消息认证码&#xff08;MAC&#xff09;。这个过程可以看作…...

Netty使用SslHandler实现加密通信-单向认证篇

引入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.100.Final</version> </dependency>生成keystore.jks文件 keytool -genkeypair -alias your_alias -keyalg RSA -keysto…...

Jetpack:007-Kotlin中的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL&#xff08;Software OpenGL&#xff09;‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式&#xff08;包括几何处理、光栅化、着色等&#xff09;&#xff0c;不依赖GPU硬件加速。这种模式通常性能较低&#xff0c;但兼容性极强&#xff0c;常用于不支持硬件加速…...

NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB,助力企业 AI 应用高效落地

NineData 的数据库 DevOps 解决方案已完成对百度智能云向量数据库 VectorDB 的全链路适配&#xff0c;成为国内首批提供 VectorDB 原生操作能力的服务商。此次合作聚焦 AI 开发核心场景&#xff0c;通过标准化 SQL 工作台与细粒度权限管控两大能力&#xff0c;助力企业安全高效…...