Docker卷与持久化数据

news2024/11/18 15:37:36

数据主要分为两类,持久化的与非持久化的。

两者都很重要,并且Docker均有对应的支持方式。每个Docker容器都有自己的非持久化存储。非持久化存储自动创建,从属于容器,生命周期与容器相同。这意味着删除容器也会删除全部非持久化数据。如果希望自己的容器数据保留下来(持久化),则需要将数据存储在卷上。卷与容器是解耦的,从而可以独立地创建并管理卷,并且卷并未与任意容器生命周期绑定。最终效果即用户可以删除一个关联了卷的容器,但是卷并不会被删除。

容器与非持久数据:容器擅长无状态和非持久化事务。每个容器都被自动分配了本地存储。默认情况下,这是容器全部文件和文件系统保存的地方。读者可能听过一些非持久存储相关的名称,如本地存储、GraphDriver存储以及SnapShotter存储。总之,非持久存储属于容器的一部分,并且与容器的生命周期一致——容器创建时会创建非持久化存储,同时该存储也会随容器的删除而删除

在Linux系统中,该存储的目录在/var/lib/docker/<storage-driver>/之下,
是容器的一部分。在Windows系统中位于C\ProgramData\Docker\windowsfilter\目录之下。

如果在生产环境中使用Linux运行Docker,需要确认当前存储驱动(GraphDriver)与Linux版本是否相符。

在容器中持久化数据的方式一般采用卷。

总体来说,用户创建卷,然后创建容器,接着将卷挂载到容器上。卷会挂载到容器文件系统的某个目录之下,任何写到该目录下的内容都会写到卷中。即使容器被删除,卷与其上面的数据仍然存在。
如图:
在这里插入图片描述
Docker卷挂载到容器的/code目录。任何写入/code目录的数据都会保存到卷当中,并且在容器删除后依然存在。

1.创建和管理容器卷

$ docker volume create myvol

默认情况下,Docker创建新卷时采用内置的local驱动。恰如其名,本地卷只能被所在节点的容器使用。使用-d参数可以指定不同的驱动。

第三方驱动可以通过插件方式接入。这些驱动提供了高级存储特性,并为Docker集成了外部存储系统
如图:
在这里插入图片描述

现在卷已经创建成功,读者可以通过docker volume ls命令进行查看,还可以使用docker volume inspect命令查看详情。

[root@open ~]# docker volume inspect myvol 
[
    {
        "CreatedAt": "2023-06-26T15:05:15+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/myvol/_data",
        "Name": "myvol",
        "Options": {},
        "Scope": "local"
    }
]

Driver和Scope都是local。这意味着卷使用默认local驱动创建,只能用于当前Docker主机上的容器。Mountpoint属性说明卷位于Docker主机上的位置。在本例中卷位于Docker主机的/var/lib/docker/volumes/myvol/_data目录。在Windows Docker主机上对应内容为Mountpoint": "C:\ProgramData\Docker\ volumes\myvol\_data。

有两种方式删除Docker卷。
● docker volume prune。
● docker volume rm。
docker volume prune会删除未装入到某个容器或者服务的所有卷,所以谨慎使用!docker volume rm允许删除指定卷。两种删除命令都不能删除正在被容器或者服务使用的卷。

此外,还可以通过在Dockerfile中使用VOLUME指令的方式部署卷。具体的格式为VOLUME <container-mount-point。但是,在Dockerfile中无法指定主机目录。这是因为主机目录通常情况下是相对主机的一个目录,意味着这个目录在不同主机间会变化,并且可能导致构建失败。如果通过Dockerfile指定,那么每次部署时都需要指定主机目录。

卷在容器和服务中的使用

$ docker container run -dit --name voltainer \
    --mount source=bizvol,target=/vol \
    alpine

即使系统中没有叫作bizvol的卷,命令也应该能够成功运行。这里引出了很有意思的一点。
● 如果指定了已经存在的卷,Docker会使用该卷。
● 如果指定的卷不存在,Docker会创建一个卷。

卷与持久化数据——命令
● docker volume create命令用于创建新卷。默认情况下,新卷创建使用local驱动,但是可以通过-d参数来指定不同的驱动。
● docker volume ls会列出本地Docker主机上的全部卷。
● docker volume inspect用于查看卷的详细信息。可以使用该命令查看卷在Docker主机文件系统中的具体位置。
● docker volume prune会删除未被容器或者服务副本使用的全部卷。谨慎使用!
● docker volume rm删除未被使用的指定卷。

这里只是说明了本体卷的使用,还有在集群节点间共享存储等内容。

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

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

相关文章

网络维护岗位个人求职简历

网络维护岗位个人求职简历1 姓名&#xff1a; 国籍&#xff1a;中国 目前所在地&#xff1a;广州民族&#xff1a;汉族 户口所在地&#xff1a;湖南身材&#xff1a;170cm64kg 婚姻状况&#xff1a;未婚年龄&#xff1a;28 求职意向及工作经历 应聘职位&#xff1a; 工作年限&a…

day14_面向对象的三大特征之一(继承)

继承的概述 Java是对现实社会的模拟&#xff0c;现实中有儿子可以继承父亲的财产&#xff0c;因此有了富二代的。 java中多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#xff0c;那么多个类中无需再定义这些属性和行为&#xff0c;只需要和抽取出来…

【Java-SpringBoot+Vue+MySql】项目开发杂记

目录 1、关闭eslint 2、 新建路由 3、安装jQuery依赖-在Vue使用JQuery语法 4、MySQL———数据全部清除&#xff0c;自增归零 5、前后端数据传递——增加功能 6、使用element-ui获取当前表格中的数据——删除功能 1、关闭eslint 2、 新建路由 {path: /user,component: Lay…

LLM - Hugging Face 工程 BERT base model (uncased) 配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131400428 BERT是一个在大量英文数据上以自监督的方式预训练的变换器模型。这意味着它只是在原始文本上进行预训练&#xff0c;没有人以…

RabbitMQ实现延迟消息,RabbitMQ使用死信队列实现延迟消息,RabbitMQ延时队列插件

文章目录 一、什么是延迟消息1、队列的属性2、消息的属性3、什么是死信4、使用死信队列的缺点5、延时消息插件 二、JavaAPI利用死信队列实现RabbitMQ延迟消息1、代码实现2、基本流程 三、JavaAPI利用插件实现RabbitMQ延迟消息1、代码实现2、基本原理 四、Springboot利用死信队列…

5分钟自建可视化平台,在线拖拽组件也太方便了!

一、前言 我们在完成 C 端用户的业务需求时&#xff0c;发现大量电商推广页面的逻辑复杂度和交互程度都比较低&#xff0c;却要消耗大量的开发资源。同时在后台管理系统的开发过程中&#xff0c;我们也发现一些相同套路的页面在不同场景下需要重复开发&#xff0c;即使我们封装…

如何提升企业采购绩效?提高采购绩效的方法

采购是任何企业的一个重要方面&#xff0c;它在确保企业平稳高效运行方面发挥着重要作用。作为一名采购专业人员&#xff0c;你有责任确保你的企业以正确的质量、数量和价格获得所需的货物和服务。 本文将讨论一些最佳做法&#xff0c;这些做法可以帮助你提高采购专业人员的绩…

【032】C++高级开发之多态技术详解(虚函数最全讲解)

C的多态技术&#xff08;虚函数&#xff09;详解 引言一、多态的概念二、虚函数2.1、父类指针保存子类空间地址 带来的问题2.2、虚函数的定义2.3、虚函数的动态绑定机制2.4、重载、重定义、重写的区别 三、纯虚函数3.1、纯虚函数的定义方式3.2、纯虚函数的案例&#xff1a;饮品…

mvnd 安装和 idea配置mvnd

一、mvnd 安装 1、mvnd 下载地址 https://github.com/apache/maven-mvnd 2、安装 解压并配置环境变量到path 打开CMD终端&#xff0c;输入 mvnd -v 看到如下信息提示则安装成功 默认使用的是内置的maven&#xff0c;配置修改&#xff0c;兼容本地的maven 打开 Maven-mvn…

基于Java医院医患管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

如何测试webservice接口

看过网上很多对Web Service的解释&#xff0c;有些文章写得通俗易懂&#xff0c;但是缺少深度解读&#xff1b;有的文章图文并茂&#xff0c;但是没有现成案例&#xff1b;有的文章非常详细&#xff0c;但是没有直观感受。 于是&#xff0c;我想从测试一个web service接口的角…

【复习《剑指Offer》6-12题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第七天 7/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

围“桌”详谈|本周六直播,一起聊聊「发版」那些事儿!

&#x1f30d; 你想要深入了解 ShardingSphere 、与业内技术大咖「面对面」探讨数据库领域的前沿趋势吗&#xff1f;那就一定不能错过由 ShardingSphere 社区出品、SphereEx 公司赞助的全球软件工程师必看的直播节目——《对谈时刻》&#xff01;每期节目&#xff0c;我们都会邀…

VRRP缺省配置

一、VRRP缺省配置 表&#xff1a;VRRP参数缺省值 二、VRRP场景作用 表&#xff1a;VRRP场景作用 三、VRRP配置缺省参数汇总 1&#xff09;配置VRRP备份组最大数 缺省情况下&#xff0c;设备只支持配置256个VRRP备份组&#xff08;VRRP4和VRRP6备份组的总和&#xff09; 当需…

计算机原理二:磁盘和内存速度差多少?

前言 作为程序员&#xff0c;我们不深究硬件&#xff0c;无需深入了解硬件的各个电路信号等细节&#xff0c;只了解存储器的基本相关知识。 存储器的层次结构 寄存器 计算机的一种硬件组件&#xff0c;用于存储和快速访问处理器的数据&#xff0c;位于CPU内部的小型存储器单…

火拼折叠屏:国产手机的杀手锏还是遮羞布?

刚过去的618&#xff0c;手机市场一反常态。 过去&#xff0c;国产安卓旗舰上演“大跳水”&#xff0c;苹果价格坚挺&#xff1b;现在&#xff0c;安卓旗舰优惠力度小&#xff0c;苹果却大降价&#xff0c;iPhone 14 Pro在各平台的优惠力度达到上千元。 IDC中国研究经理郭天翔…

安卓应用中的版本问题

用android Studio 做了一个应用&#xff0c;想发布在google play 里&#xff0c;就碰到一个版本的问题。 我上传了一个版本&#xff0c;更新了一点点&#xff0c;结果有这样一个错误&#xff1a;Version code 1 has already been used. Try another version code。本文就这问题…

【pytest学习总结2.3 】- 如何使用固定装置 fixtures (1)

目录 2.3 如何使用固定装置 fixtures 2.3.1 请求并调用固定装置 fixture 2.3.2 自动固定装置&#xff08;不需要你请求调用&#xff09; 2.3.3 固定装置的范围&#xff1a;function, class, module, package or session. 2.3.4 测试后置 teardown/cleanup 2.3.5 安全的 t…

Redis列表类型(list)模拟队列操作

文章目录 Redis列表类型模拟队列操作1. 使用用lpush和rpop模拟队列的操作1.1 lpush介绍1.2 rpop介绍1.3 llen介绍1.4 lrange介绍1.5 del命令介绍 2. 使用用rpush和lpop模拟队列的操作2.1 rpush介绍2.2 lpop介绍 Redis列表类型模拟队列操作 Redis的列表类型&#xff08;list&…

JavaScript 中内存泄漏的几种情况?

一、是什么 内存泄漏&#xff08;Memory leak&#xff09;是在计算机科学中&#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存 并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内存之前就失…