Docker数据卷使用手册

news2024/9/25 17:18:36

目录

目标

前言

概念

官方文档

匿名卷(Anonymous Volumes)

简介

案例

命名卷(Named Volumes)

简介

案例


目标

  1. 掌握Volume命令
  2. 通过演示案例,理解数据卷种类与各自的用途。

前言

        我们在很多网上教程上可以看到很多老师们往往将数据卷划分为三个种类:匿名卷、命名卷、绑定挂载。但是我去官方网站看了相关文档,文档中十分明确地将绑定挂载(Bind mounts)、数据卷(Volumes)、临时挂载(tmpfs mounts)规定为三个类别。这可能是很多老师从命令的角度去考虑问题,因为-v参数也可以创建绑定挂载。但是对于这些概念性的东西每个人理解方式不同,我们不用过于纠结,只要理解他们之间的区别并且熟练使用就行相较于绑定挂载,官方推荐优先考虑使用数据卷。

  1. 其中临时挂载的数据存储在内存中,无法持久化。所以官方将它单独拎出来做一个独立的类型。
  2. 绑定挂载与数据卷在适用场景上有很大的区别。绑定挂载适用场景偏向于开发和测试阶段,功能更倾向于实时处理,比如代码热部署。
  3. 数据卷的适用场景偏向生产阶段,功能更偏向于安全和持久化,比如数据的持久化、MQ中间件。


概念

数据卷(Volume)

官方定义

Volumes

Volumes are the preferred mechanism for persisting data generated by and used by Docker containers.

Volumes are often a better choice than persisting data in a container's writable layer, because a volume doesn't increase the size of the containers using it, and the volume's contents exist outside the lifecycle of a given container.

翻译

卷是持久化Docker容器生成和使用数据的首选机制。

卷通常比在容器的可写层中持久化数据更好,因为卷不会增加使用它的容器的大小,而且卷的内容存在于给定容器的生命周期之外。

我的理解

  1. 将容器内的某些目录和主机内的某些目录做映射处理,主机内的这些目录就叫数据卷。容器内的这些目录中的数据在数据卷中持久化,可以做到删除容器,数据卷中的数据仍然存在。
  2. 可以把数据卷和MySQL数据库类比:数据卷和MySQL数据库都用于持久化数据。数据卷主要用于跨容器、容器重启、容器重建;MySQL倾向于结构化数据、事务管理、数据一致性等。

官方文档

数据卷的概念及使用方法 | Volumesicon-default.png?t=N7T8https://docs.docker.com/engine/storage/volumes/

数据卷基本命令 | docker volumeicon-default.png?t=N7T8https://docs.docker.com/reference/cli/docker/volume/


匿名卷(Anonymous Volumes)

简介

  1. 顾名思义,创建匿名卷时只需要指定容器的目录,不需要关心匿名卷的存储路径。
  2. 适用于临时数据处理、短期开发任务、重复的测试任务。

案例

        创建Nginx容器并把Nginx首页所在目录制作成匿名卷。通过修改容器内的首页内容、修改匿名卷内的首页内容、删除容器观察匿名卷等操作实现对匿名卷的初步了解。

第一步:创建Nginx容器,并将Nginx首页所在的目录做成匿名卷。

#-v表示创建数据卷,-v后面只写了一个目录,则这个目录表示容器内的目录。
docker run -d -p 8848:80 --name nginx -v /usr/share/nginx/html nginx

第二步:查看容器详情。可以发现我们的目标目录(Destination表示容器内的目录)和主机目录(Source)已经产生了关联。由于我们创建的是匿名卷,没有定义卷名,所以Docker为我们自动生成了一串哈希值(Name的值)。

docker inspect 23805528c4af

第三步:去浏览器访问Nginx,页面返回了Nginx的默认首页。此时我们修改容器内Nginx的首页并重启容器,发现首页内容改变了。

localhost:8848

#进入容器
docker exec -it 23805528c4af /bin/bash
#进入Nginx首页目录
cd /usr/share/nginx/html
#修改容器内容。有的镜像非常精简没有vi命令,大家可以用echo创建首页覆盖原来的首页。
echo '<h1>Hello World!<h1>' >index.html
#退出容器。
exit
#关闭容器
docker stop 23805528c4af
#启动容器
docker start 23805528c4af

第四步:根据第二步我们已经看到了数据卷的位置,我们来看看数据卷中的首页内容有没有发生变化。

第五步:修改数据卷中的首页内容,重启容器后访问Nginx,发现页面变化了。

第六步:分别在在容器和主机上,做创建文件、删除文件操作。发现数据卷的内容和容器内对应的目录内容一致。(操作略)

第七步:删除容器,观察数据卷是否还存在。发现还存在。

docker rm nginx

第八步:如果想实现删除容器的同时也删除匿名卷,可以有以下两种方法。

方法一:创建容器的时候使用--rm,这个参数表示容器停止后会自动删除该容器,以及相关的所有资源。

#创建容器
docker run -d -p 8848:80 --name nginx --rm -v /usr/share/nginx/html nginx
#查看数据卷
docker inspect nginx
#停止容器
docker stop nginx
#查看是否还存在数据卷
docker volume ls

方法二:如果创建容器时没有使用--rm,在删除容器时加上-v参数,表示也删除匿名卷。

#创建容器
docker run -d -p 8848:80 --name nginx -v /usr/share/nginx/html nginx
#查看数据卷
docker inspect nginx
#停止容器
docker rm -v nginx
#查看是否还存在数据卷
docker volume ls


命名卷(Named Volumes)

简介

  1. 创建命名卷时需要定义卷名。从容器的详细来看,命名卷的Name是我们自定义的,匿名卷的Name是Docker自动生成的哈希值。
  2. 容器的删除不会导致数据卷被删除。虽然匿名卷也能实现,但在创建容器或删除容器时添加特定的参数仍然会使得匿名卷被删除(上面介绍匿名卷的第八步有所体现),而命名卷不会因此被删除。
  3. 适合做数据持久化,比如数据库的存储目录和日志文件;适合做数据迁移备份;适合多个容器间共享数据。

案例

        创建Nginx容器并把Nginx首页所在目录制作成命名卷。通过停止容器、删除容器操作观察命名卷是否仍然存在。

第一步:创建Nginx容器,并将Nginx首页所在的目录做成命名卷。

#卷名是nginx-volume
docker run -d -p 8848:80 --name nginx -rm -v nginx-volume:/usr/share/nginx/html  nginx

第二步:停止容器,发现命名卷还是存在。注意:这个容器在创建时用了--rm参数。在之前的案例中,创建匿名卷时使用了这个参数,在停止容器时,匿名卷被删除了,而命名卷保留着。

第三步:创建新容器时不用--rm参数,在删除容器时使用-v参数,看命名卷是否存在。结论是命名卷仍然存在。

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

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

相关文章

位数问题c++

题目描述 在所有的N位数中&#xff0c;有多少个数中有偶数个数字3&#xff0c;由于结果可能很大&#xff0c;你只需要输出这个答案对12345取余的值。 输入 读入一个数N(N≤1000) 输出 输出有多少个数中有偶数个数字3。 样例输入 2 样例输出 73样例解释&#xff1a; 1…

【SpringCloud Alibaba】(八)学习 Sentinel 核心技术与配置规则(下)

目录 1. 热点规则1.1 演示热点规则1.2 演示热点高级选项规则 2. 授权规则2.1 演示授权规则 3. 系统规则3.1 演示系统规则 4. SentinelResource 注解4.1 SentinelResource 注解概述4.2 演示 SentinelResource 注解4.2.1 定义限流和降级后的处理方法4.2.2 在外部类中指定限流和异…

Python酷库之旅-第三方库Pandas(098)

目录 一、用法精讲 421、pandas.DataFrame.infer_objects方法 421-1、语法 421-2、参数 421-3、功能 421-4、返回值 421-5、说明 421-6、用法 421-6-1、数据准备 421-6-2、代码示例 421-6-3、结果输出 422、pandas.DataFrame.copy方法 422-1、语法 422-2、参数 …

sheng的学习笔记-AI-半监督学习

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是半监督学习 我们在丰收季节来到瓜田&#xff0c;满地都是西瓜&#xff0c;瓜农抱来三四个瓜说这都是好瓜&#xff0c;然后再指着地里的五六个瓜说这些还不好&#xff0c;还需再生长若干天。基于这些信息&a…

前端面试题-场景设计题

1. 如何使用 css 画一个三角形 借助 border 实现&#xff0c;在 width 和 height 都为 0 时&#xff0c;设置 border&#xff0c;便会呈现三角形。想要哪个方向的三角形&#xff0c;设置其他三边为 透明即可。 同时&#xff0c;可以通过调整不同边的宽度&#xff0c;来调整三角…

巨省成本的电子版招生简章越来越流行,你知道是怎么制作的吗?

随着科技的不断发展&#xff0c;传统的纸质招生简章逐渐被电子版招生简章所取代。电子版招生简章不仅能够节省大量成本&#xff0c;还能够提高宣传效果&#xff0c;因此在市场上越来越流行。你知道它是怎么制作的吗&#xff1f; 1.要制作电子杂志,首先需要选择一款适合自己的软…

Milvus在数派数据大模型业务中的实践

01. 写在前面 云南数派数据科技有限公司是一家总部位于美丽春城昆明的大模型创新企业&#xff0c;在深圳和昆明双城并立&#xff0c;设立了两个研发中心。我们的旗舰产品——SUPIEDT大模型开发平台&#xff0c;作为一款全生命周期的异构算力大模型开发平台&#xff0c;集一站式…

推荐3款好用的电脑动态壁纸软件,资源丰富,图片精美

WinDynamicDesktop WinDynamicDesktop是一款将macOS Mojave的动态桌面功能移植到Windows平台上的开源软件。它允许用户根据时间、地点和天气等条件自动更换壁纸&#xff0c;从而实现类似macOS系统中的动态壁纸效果。 该软件的主要特点包括&#xff1a; 动态壁纸&#xff1a;W…

查找1

一、查找的基本概念 二、线性表的查找 1&#xff09;顺序查找&#xff08;线性查找&#xff09; 2&#xff09;折半查找&#xff08;二分或对分查找&#xff09; 3)&#xff08;分块&#xff09;索引查找

具有宽输入电压范围的75V同步降压控制器LM5145

芯品快报:亚德诺(ADI)汽车音频总线AB收发器AD2428 这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) LM5145是德州仪器推出的一款具有较宽输入电压的75V同步降压控制器,其输入电压范围可达6V~75V,具有0.8V~60V可调整的输出…

【研发日记】嵌入式处理器技能解锁(五)——TI C2000 DSP的中断系统

文章目录 前言 背景介绍 中断框架 外设中断 ePIE模块 CPU中断 中断嵌套 应用实例 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信》 见…

大数据中台建设整体技术方案(中台设计)word完整版

1. 中台概念 2. 推动企业组织模式演进 3. 建设方法 4 .中台内容 5. 数据安全体系 中台内容围绕数据中台建设评估、整体框架、数据采集&#xff0c;结构化、半结构化、非结构化的数据采集&#xff0c;数据计算能力、存储计算引擎、数据架构、数据挖掘、各种不同数据层建设、模型…

ssrf+redis

curl支持很多协议&#xff0c;有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDA dict被禁用了用&#xff08;?urlhttp://172.19.0.3端口&#xff09;来探测一下端口吧 172.19.0.3主机只开放一个80端口 看看内网还有其他服务器没 这里可以看到内网还有一台172.1…

【Python】给动态图片加水印

文章目录 原文&#xff1a;https://blog.c12th.cn/archives/35.html前言部分代码ini文件CMD 完整代码使用教程(打包整理后文件)注意事项 最后 原文&#xff1a;https://blog.c12th.cn/archives/35.html 前言 之前 图片加水印 是对于静态图片&#xff0c;而现在这个是对动态图片…

一个快速简单的工具来分析SSL/TLS协议数据帧 (C/C++代码实现)

SSL/TLS协议是网络安全通信的基石&#xff0c;它通过在客户端和服务器之间建立一个加密的通道&#xff0c;确保数据传输的安全性和完整性。SSL&#xff08;Secure Sockets Layer&#xff09;最初由Netscape公司开发&#xff0c;而TLS&#xff08;Transport Layer Security&…

Renesa Version Board开发RT-Thread 之UART驱动应用

目录 概述 1 硬件介绍 2 软件配置 2.1 RT-Thread Studio配置参数 2.2 FSP配置MCU 3 RT-Thread中UART的接口介绍 3.1 RT-Thread UART简介 3.2 RT-Thread 下的UART接口 4 UART的应用 4.1 应用功能实现 4.2 源代码文件 5 测试 程序下载地址&#xff1a; RenesaVersio…

Open3D 最小点约束的体素滤波(34)

Open3D 最小点约束的体素滤波(34) 一、算法介绍二、算法流程三、算法代码四、实现效果一、算法介绍 体素滤波可以达到快速减少点云数量的目的,而海量点云往往是需要这一步骤才可以进行后续处理的,比如配准时使用千万级别的原始点云配准显然是不合理的,因此体素滤波是比较重…

Mybatis搭建配置文件基础用法参数传递

背景介绍 Mybatis原是Apache的一个开源项目iBatis 2010碾开发团队转移到谷歌旗下改名为Mybatis Mybatis介绍 Mybatis是一个优秀的数据持久层框架(dao层 数据访问层 数据持久层) Mybatis是对jdbc进行封装,比见面jdbc这手动设置参数,手动映射结果的操作 Mybatis是将jdbc中的…

高变比LLC谐振变换器中“十”字型低匝比平面变压器设计

导语 为了解决高变比LLC谐振变换器的变压器绕组匝数过多、绕组结构复杂这一技术瓶颈背后的核心科学问题&#xff0c;本文提出一种“十”字型低匝比平面变压器&#xff0c;用于高变比LLC谐振变换器。 1.0引言 大数据中心的建设离不开供配电系统—电源设备的建设&#xff0c;为大…

15天速通java基础:java(J2SE)阶段学习总结(数据类型、数组、方法、面向对象、异常处理、容器、流、多线程、网络编程)

有一段时间没有写博客了&#xff0c;我这段时间去学习java了&#xff0c;谁也不会想到&#xff0c;短短两周的时间&#xff0c;我的java学习已经学习了不少东西了&#xff0c;毕竟python这座山也可以去攻java这块玉&#xff0c;对应python那就是基础的大部分内容&#xff0c;不…