Docker数据卷操作实战

news2025/2/28 13:21:33

什么是数据卷

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和享用
  • 对 数据卷 的修改立马生效
  • 对 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即时容器被删除

为什么使用数据卷

  • 当创建一个容器的时候,容器运行,数据能不能持久化
  • 如果能够持久化,数据存储在哪?由于 docker 是隔离的,数据能不能存储在容器外
  • 如果部署很多容器,每次都需要进入容器中进行配置嘛?能不能外部进行配置

docker 数据卷呈现给 docker 容器的一个形式就是目录,该目录支持多个容器间共享,修改不会影响到镜像。使用 Docker 的数据卷,类似在系统中使用 mount 挂载一个文件系统。

数据卷挂载操作

三种挂载数据卷格式

  • 具体目录挂载:docker run [options] -v <宿主机绝对路径:容器内的路径[:ro | rw]> <镜像名>
  • 默认目录挂载:docker run [options] -v <任意别名:容器内的路径[:ro | rw]> <镜像名>
  • 匿名目录挂载:docker run [options] -v <容器内的路径[:ro | rw]> <镜像名>

默认目录挂载和匿名目录挂载的目录默认在 /var/lib/docker/volumes/ 目录下。

具体目录挂载 

格式:docker run [options] -v <宿主机绝对路径 | 任意别名:容器内的路径[:ro | rw]> <镜像名> 

ro:代表 read-only,容器的路径只允许读,不允许写。不影响宿主机的路径可读可写

rw:默认值,代表可读可写

具名挂载

[root@k8s-master ~]# docker run -d -p 8081:8080 --name tomcat02 -v /opt/aa:/usr/local/tomcat/webapps tomcat:8.5.73

 测试容器和宿主机之间数据共享

#进入tomcat02容器
#进入容器挂载目录
#创建text.txt文件
[root@k8s-master ~]# docker exec -it tomcat02 bash
root@83751adb2f16:/usr/local/tomcat# cd webapps/
root@83751adb2f16:/usr/local/tomcat/webapps# touch text.txt
root@83751adb2f16:/usr/local/tomcat/webapps# ls
text.txt

#在宿主机查看文件
[root@k8s-master ~]# cd /opt/aa/
[root@k8s-master aa]# ls 
text.txt

#在宿主机添加test2.txt
[root@k8s-master aa]# touch test2.txt
[root@k8s-master aa]# ls
test2.txt  text.txt
root@83751adb2f16:/usr/local/tomcat/webapps# ls
test2.txt  text.txt

删除容器

[root@k8s-master ~]# docker rm -f 83751adb2f16
[root@k8s-master aa]# ls
test2.txt  text.txt

 默认目录挂载

格式:docker run [options] -v <任意别名:容器内的路径[:ro | rw]> <镜像名> 

ro:代表 read-only,容器的路径只允许读,不允许写。不影响宿主机的路径可读可写

rw:默认值,代表可读可写

[root@k8s-master ~]# docker run -d -p 8080:8081 --name tomcat -v aa:/usr/local/tomcat/webapps tomcat:8.5.27
[root@k8s-master ~]# find / -name aa
/var/lib/docker/overlay2/6bd69f1cc95f446236c6a944a059082b3a79f9d8ea76bdf41e30fc7a61f4ff14/diff/usr/lib/.build-id/aa
/var/lib/docker/overlay2/53bde18c658b564d75ec2e18ff485eca8cb8056ae625613e4cecc11a8695dd5d/merged/usr/lib/.build-id/aa
/var/lib/docker/volumes/aa
/usr/share/locale/aa
/opt/aa
#在宿主机中查看
 [root@k8s-master aa]# cd /var/lib/docker/volumes/aa/_data/
[root@k8s-master _data]# ls
docs  examples  host-manager  manager  ROOT
#aa 代表一个数据卷名字,可以是任意,这相当于相对路径,它会在 /var/lib/docker/volumes 下创建 aa 目录作为数据卷。

匿名目录挂载

没指定名字的挂载都是匿名挂载,-v 只写了容器内路径,并没写宿主机路径。

匿名目录挂载的目录是:/var/lib/docker/volumes/,它会在这个目录生成匿名数据卷目录。

格式:docker run [options] -v <容器内的路径[:ro | rw]> <镜像名>

[root@k8s-master ~]# docker run -d -p 8080:8081 --name tomcat03 -v /usr/local/tomcat/webapps tomcat:8.5.27
#没有指定宿主机,docker会自动在/var/lib/docker/volumes生成很长的字符串
[root@k8s-master volumes]# ll
total 24
drwx-----x. 3 root root     19 Feb 26 08:03 57228ed1d063b3c66afa84f968018311f3ab5c2e3272d9c7197463981a76df25
#查看数据卷
[root@k8s-master volumes]# docker volume ls
DRIVER    VOLUME NAME
local     57228ed1d063b3c66afa84f968018311f3ab5c2e3272d9c7197463981a76df25

 读写权限

 启动 tomcat04 容器,挂载到 kele 数据卷里,并赋予只读权限

[root@k8s-master ~]# docker run -d -P --name tomcat04 -v frx:/usr/local/tomcat/webapps:ro tomcat:8.5.27
74dbfe31c4a5f47f66c3f2b807d5944d7eefc711d2b576a82fa6485ac8079d69
[root@k8s-master ~]# docker volume ls
DRIVER    VOLUME NAME
local     frx

 #到宿主机目录下查看,并新建文本文件
[root@k8s-master ~]# cd /var/lib/docker/volumes/frx/_data/
[root@k8s-master _data]# touch test1.txt
[root@k8s-master _data]# ls
docs  examples  host-manager  manager  ROOT  test1.txt
#进入容器查看是否可读,不允许写
[root@k8s-master ~]# docker  exec -it tomcat04 /bin/bash
root@74dbfe31c4a5:/usr/local/tomcat# cd webapps/
root@74dbfe31c4a5:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager  test1.txt
root@74dbfe31c4a5:/usr/local/tomcat/webapps# touch test2.txt
touch: cannot touch 'test2.txt': Read-only file system

 数据卷操作命令

#数据卷查看
docker volume ls 
#查看frx数据卷的具体信息
[root@k8s-master ~]# docker volume inspect frx

#数据卷创建
docker volume create Myvolume

#数据卷删除
docker  volume rm -f Myvolume

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

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

相关文章

微信小程序-二维码绘制

wxml <view bindlongtap"saveQrcode"><!-- 二维码 --><view style"position: absolute;background-color: #FFFAEC;width: 100%;height: 100vh;"><canvas canvas-id"myQrcode" style"width: 200px; height: 200px;ba…

Fiddler 的安装与使用

目录 1、Fiddler 的安装2、Fiddler 的使用 1、Fiddler 的安装 通过Fiddler 官网进行下载&#xff08;下载免费的经典版本&#xff09;&#xff0c;填写用途、邮箱、国家信息即可开始下载。 Fiddler 官网下载链接 双击安装包即可进行安装&#xff0c;显示以下界面说明安装成功。…

Hadoop架构详解

Hadoop 是一个开源的分布式计算系统&#xff0c;用于存储和处理大规模数据集。Hadoop 主要由HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce、Yarn&#xff08;Jobtracker&#xff0c;TaskTracker&#xff09;三大核心组件组成。其中HDFS是分布式文件…

清华大学DeepSeek文档下载,清华大学deepseek下载(完成版下载)

文章目录 前言一、清华大学DeepSeek使用手册下载二、清华大学DeepSeek使用手册思维导图 前言 这是一篇关于清华大学deepseek使用手册pdf的介绍性文章&#xff0c;主要介绍了DeepSeek的定义、功能、使用方法以及如何通过提示语设计优化AI性能。以下是对这些核心内容的简要概述&…

Hadoop第2课(伪分布式集群的搭建)

jdk和hadoop安装包&#xff1a; hadoop-2.9.2.t......等2个文件官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 1、用XFTP发送hadoop安装包和jdk到/home/hadoop/目录下&#xff08;hadoop用户的主目录&#xff09; 2、解压jdk安装包到~目录 卸载jdk的命令&#xff1a;r…

使用Crawlee可破题js渲染采集数据

使用 Crawlee 实现自动化爬虫流程 1. Crawlee 简介 Crawlee 是一个强大的爬虫框架&#xff0c;用于快速构建和维护可靠的爬虫。它支持多种爬虫类型&#xff0c;包括基于 Cheerio 和 Playwright 的爬虫&#xff0c;能够高效处理静态和动态网页。 2. 项目目标 通过自动化脚本实…

Fiddler在Windows下抓包Https

文章目录 1.Fiddler Classic 配置2.配置浏览器代理自动代理手动配置浏览器代理 3.抓取移动端 HTTPS 流量&#xff08;可选&#xff09;解决抓取 HTTPS 失败问题1.Fiddler证书过期了 默认情况下&#xff0c;Fiddler 无法直接解密 HTTPS 流量。需要开启 HTTPS 解密&#xff1a; 1…

Java语法基础知识点1

目录 一、数组 1.1数组的初始化&#xff1a; 1.2数组的遍历方法&#xff1a; 1.3数组的常见使用方法&#xff1a; 二、类和对象 2.1构造方法&#xff1a; 2.2this关键字: 三、封装 3.1访问限定符&#xff1a; 3.2static关键字&#xff1a; 3.3代码块&#xff1a; 一…

【新手入门】SQL注入之盲注

一、引言 在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办? 例如应用程序返回到一个"通用的"的页面&#xff0c;或者重定向一个通用页面(可能为网站首页)。这时&#xff0c;我们之前学习的SQL注入的办法就无法使用了。这种情况我们称之为无…

python-leetcode-分割等和子集

416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; class Solution:def canPartition(self, nums: List[int]) -> bool:total sum(nums)if total % 2 ! 0:return Falsetarget total // 2dp [False] * (target 1)dp[0] Truefor num in nums:for j in range(tar…

趣讲TCP三次握手

一、TCP三次握手简介 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP连接中&#xff0c;只有两方进行通信&#xff0c;它使用校验和、确认和重传机制来保证数据的可靠传输。…

基于coze+微信小程序实现图片上传并利用大模型解析

项目截图&#xff1a; 实现代码&#xff08;直接搬去可用&#xff09; 前提&#xff1a;需要填写你的oss配置coze的api授权配置&#xff01;&#xff01;&#xff01; <template><view class"container"><!-- 高斯模糊背景 --><view class&qu…

VMware Fusion 虚拟机Mac版 安装CentOS 7 系统

介绍 CentOS是Community Enterprise Operating System的缩写&#xff0c;也叫做社区企业操作系统。是企业Linux发行版领头羊Red Hat Enterprise Linux的再编译版本&#xff08;是一个再发行版本&#xff09;&#xff0c;而且在RHEL的基础上修正了不少已知的 Bug &#xff0c;相…

java练习(44)

ps:题目来自力扣 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 // 定义链表节点类&#xff0c;每个节…

Deepseek 开源周第一天:FlashMLA

Deepseek 隆重开启开源周!第一天我们迎来了FlashMLA。我很高兴带大家了解这项创新,揭秘 FlashMLA 为何能成为 AI 和 GPU 优化领域的变革者。 Deepseek 开源周的热门话题有哪些?

DeepSeek-OpenSourceWeek-第三天-Release of DeepGEMM

DeepGEMM:这是一款专为高效的 FP8(8 位浮点)通用矩阵乘法(GEMMs)而开发的尖端库。GEMMs 是许多 AI 工作负载(尤其是深度学习)中的基本操作。 特点: 支持稠密和 MoE GEMMs:它可以处理标准的稠密矩阵乘法以及混合专家(MoE)模型中使用的矩阵乘法。MoE 是一种神经网络架…

Bitlocker取证之PXE降级取密钥

支持到微软Surface pro系列。

.Net Core Visual Studio NuGet.Config 配置参考

Visual Studio 2022 NUGET NU1301 无法加载源 基础连接已关闭&#xff1a;无法建立SSL / TLS安全通道的信任关系&#xff1b;根据验证过程&#xff0c;远程证书无效&#xff0c;参考文章&#xff1a;https://blog.csdn.net/hefeng_aspnet/article/details/145780081 NuGet 行为…

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 小伙伴们&#xff0c;你们好呀&#xff01;今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册&#xff0c;并…

Apache-iotdb 基本概念

问题背景 定义&#xff08;写得太好了&#xff01;&#xff09; root 是整个树状结构的父节点&#xff0c; CirroData-TimeS 有存储组、设备、测点等概念&#xff0c;数据在存储的时候&#xff0c;不同的存储组的数据是存储在不同的文件夹中的。上图中有 root.sgcc、root.ln两…