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

Docker Volume

"Ice in my vein" 


Docker Volume(存储卷)

什么是存储卷?

        存储卷就是: “将宿主机的本地文件系统中存在的某个目录,与容器内部的文件系统上的某一目录建立绑定关系”。

存储卷与容器本身的联合文件系统?

        在宿主机上的这个与容器形成绑定关系的目录被称作“存储卷”。而这个卷的本质就是文件或者目录,它可以绕过默认的联合文件系统,直接以文件或目录的形式存在于宿主机上。

        使得可以在宿主机和容器内共享数据库内容让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容,容器和宿主机的数据读写是同步的

        

为什么需要存储卷?

        存储卷技术的产生,主要来源于解决四个问题的需求。

✨ 数据丢失

容器按照业务类型,总体可以分为两类:

• 无状态(数据不需要被持久化)

• 有状态(数据需要被持久化)

        显然,容器更擅长无状态应用。因为,容器根目录的生命周期,同容器的生命周期一样。容器文件系统的本质是在镜像层上面创建的读写层,运行中的容器对任何文件的修改都存在于该读写层,当容器被删除时,容器中的读写层也会随之消失。 

        但实际业务总是有各种需要数据持久化的场景: 比如 MySQLKafka 等有状态的业务。所以,Docker 提出了卷(volume)的概念

✨ 性能问题

        UnionFS 对于修改删除等,一般效率非常低。

✨  宿主机和容器互访不方便
宿主机访问容器,或者容器访问要通过 docker cp 来完成,应用很难操作。
✨  容器和容器共享不方便
两个容器内部不同的目录,同时绑定宿主机上的某一目录,就可以实现数据共享。

        

存储卷分类

        目前 Docker 提供了三种方式将数据从宿主机挂载到容器中:

🩰 volume docker 管理卷

🩰 bind mount 绑定数据卷

🩰 tmpfs mount 临时数据卷

        下图表示三类存储卷,在Docker存储卷中的结构:


存储卷详解

管理卷 Volume

        docker管理卷默认映射到宿主机的 /var/lib/docker/volumes(如果修改了默认目录,就不是这条路径)目录下,只需要在容器内指定要挂在点是什么。容器引擎daemon会自行创建一个空的目录在被绑定的宿主机目录下。或者使用一个已经存在的目录,与存储卷建立存储关系。

        这种方式极大解脱用户在使用卷时的耦合关系,缺陷是用户无法指定那些使用目录,临时存储比较适合。

创建卷:

        存储卷可以通过命令方式创建,也可以通过在创建容器的时候通过 -v and --mount 指定。

方法一:Volume 命令操作    

        操作docker管理卷的命令清单如下:

命令别名功能
docker volume create创建存储卷
docker volume inspect显示存储卷的详细信息
docker volume lsdocker volume list列出存储卷
docker volume prune清理无用的存储卷
docker volume rm删除存储卷

🎱 docker volume create

语法:

# 创建存储卷
docker volume create [OPTIONS] [VOLUME]OPTIONS:
-d, --driver:指定驱动,默认是 local
--label:指定元数据

🎱 docker volume inspect

语法:

# 查看卷详细信息
docker volume inspect [OPTIONS] VOLUME [VOLUME...]OPTIONS:
-f:指定相应个格式

🎱 docker volume ls

语法:

# 列出卷
docker volume ls [OPTIONS]OPTIONS:
--format:指定相应个格式
--filter,-f: 过滤
-q: 仅显示名称    

🎱 docker volume rm

语法:

# 删除卷,需要容器不使用    
ocker volume rm [OPTIONS] VOLUME [VOLUME...]OPTIONS:
-f,--force:强制删除

🎱 docker volume prune

语法:

# 删除不使用的本地卷
docker volume prune [OPTIONS]OPTIONS:
--filter:过滤
-f, --force :不提示是否删除
方法二: -v 或者 --mount 指定
# -v参数 完成目录映射
docker run -v name:directory[:options]ARGS:
name:卷名称
directory:卷映射到容器的目录
options:如 ro 表示 readonly

# --mount 参数--mount '<key>=<value>,<key>=<value>'ARGS:
type:类型表示 bind, volume, or tmpfs
source\src :对于命名卷,这是卷的名称。[对于匿名卷,省略此字段]
destination\dst\target:文件或目录挂载在容器中的路径
ro,readonly: 只读方式挂载
方法三: Dockerfile 匿名卷

        通过Dockerfile的VOLUME可以创建docker管理卷。但不在本篇细说。

操作案例:

Docker 命令创建管理卷

        使用 "docker create" 创建一个名为 "test_volume"的存储卷:

        输入 "docker volume ls" 查看我们创建的存储卷: 

       检查存储卷的内部信息“docker volume inspect”:

        我们现在访问这个目录:

        此时可以发现,该目录是被自动创建的空目录。

        我们给该存储卷分配给一个nginx容器时,就会发现:

        宿主机和容器之间数据是同步的

Docker -v 创建管理卷

        -v 创建管理卷,并且启动容器:

docker run --name nginx1 -d -p 80:80 -vtest_volume:/usr/share/nginx/html:ro nginx:1.24.0

        进入卷的目录:

        我们看到,创建docker管理卷后,宿主机的目录同容器目录文件实际是共享的~我们可以借此修改index.html文件:

        这是修改前的原Nginx首页:

        修改后(注:我们是在宿主机的目录,对这个首页文件进行修改):

        我们再次进入docker容器中,看看修改容器内的文件后,宿主机会不会更新:

        我们会发现,在容器内部是不能对该关联目录内的文件进行修改的!答案是,我们在创建管理卷的时候,设置了“ro”参数 —— 所以,这个ro参数针对的对象是,谨防从容器内部对文件进行修改!

        最后,我们再清理释放空间。

        指定 ro 的话宿主机可以修改,但是容器里面无法修改

Docker mount 创建管理卷

        mount 创建管理卷,并且启动容器:

docker run -d -p 80:80 --name nginx 
--mount    type=volume,source=test_volume,target=/usr/share/nginx/html nginx:latestARGS:
type有很多: volume表示管理存储卷 bind表示绑定存储卷 tmpfs表示临时存储卷

        查看卷、容器创建成功:

        查看卷挂载点:

Docker 卷生命周期

        我们继续上接前文,为一个nginx容器创建了一个存储卷,我们可以在容器内、宿主机上找到这个存储卷同步的内容:

        当我们将容器删除时:

        存储卷的内容还是存在的,如果此时我们使用命令删除存储卷时,存储卷的内容就会被彻底清空:        

Docker 卷共享

        -v 创建管理卷,并且启动 2 容器,指定同一个存储卷。

docker container run --name nginx1 -d -p 80:80 -v mutual_volume:/usr/share/nginx/html nginx:1.24.0
docker container run --name nginx2 -d -p 81:80 -v mutual_volume:/usr/share/nginx/html nginx:1.23.0

        观察存储卷信息修改 index.html:

        观察容器内部的文件,发现都是同一份:

绑定卷 bind mount

        绑定数据卷,需要人工在宿主机上指定一个特定路径,在容器中指定一个特定路径,再建立这两个特定路径的关联。

        与管理卷不同,绑定卷的有些参数是不一样的。

docker run -v name:directory[:options]ARGS:
name:宿主机目录,这个和管理卷是不一样的
--mount '<key>=<value>,<key>=<value>'ARGS:
source\src: 宿主机目录,这个和管理卷是不一样的

        其余参数都大差不差,咱们在这儿就不多费舌,直接上操作案例。

操作案例: 

--mount 创建管理卷

        使用-mount 方式创建容器:

        创建 nginx 容器,并将宿主机 “/webapp” 目录挂载至容器“/usr/share/nginx/html”目录。

注:如果这个目录不存在,就会报错

docker run -d -p 80:80 --name bind 
--mounttype=bind,source=/data/webapp,target=/usr/share/nginx/html nginx:1.23.0# source:人为指定路径

        查看挂载信息:

 docker inspect bind

        进入容器的终端,查看挂载点目录,和在宿主机上查看里面都是没有文件:

         这是 bind mount 模式和 volume 模式最大的不同点!!
我们在宿主机上添加 index.html,通过浏览器,我们可以访问到这个文件内容:
删除容器,然后查看宿主机上的文件 , 还是存在,说明容器删除并不影响 bind 映射。

-v 创建绑定卷

        使用-v 方式创建容器: 创建 nginx 容器:

        并将宿主机/webapp2 目录挂载至容器 /usr/share/nginx/html 目录。注:当目录不存在时,仍然会报错。

docker run -d -p 80:80 --name bind -v /data/webapp2:/usr/share/nginx/html nginx:1.23.0

        查看挂在信息:

        后面的演示情况可以参照 使用 --mount方式创建的存储卷。

绑定卷共享

        我们启动两个绑定卷,都绑定到宿主机的同一个目录:

        我们使用本机回环,这两个容器看到的内容是一样的。

临时卷 tmpfs

        临时卷数据位于内存中,在容器和宿主机之外。映射到于宿主机内存中,一旦容器停止运行,tmpfs mounts就会被移除,数据就会丢失,用于高性能的临时数据存储。

tmpfs 局限性:     

🪀 不同于卷和绑定挂载,不能在容器之间共享 tmpfs 挂载

🪀 这个功能只有在 Linux 上运行 Docker 时才可用

创建卷:

方式一: 指定--tmpfs 创建
--tmpfs /path
方式二:--mount 指定参数创建
--mount '<key>=<value>,<key>=<value>'OPTIONS:
destination,dst,target:挂载在容器中的路径
tmpfs-size:tmpfs 挂载的大小(以字节为单位)。默认无限制
tmpfs-mode:tmpfs 的八进制文件模式。例如,700 或 0770。默认为 1777或全局可写

操作案例:

tmpfs 参数创建临时卷

        创建临时卷并启动容器

docker container run --name tmpfs -d -p 80:80 --tmpfs /usr/share/nginx/html/ nginx:latest

        进入容器可以看到 nginx 里面的文件被覆盖了,也就是说 tmpfs 也会覆盖容器里面的文件。绑定卷也是如此。

        添加一个首页:

         我们可以在浏览器中查看:

        我们现在重启容器,发现之前的文件不存在了!

mount 创建临时卷

        创建临时卷并启动容器:

docker container run --name tmpfs -d -p 80:80 
--mounttype=tmpfs,target=/usr/share/nginx/html,tmpfs-size=1m nginx:1.23.0

        添加一个首页:

tmp-size: 

        拷贝一个大文件到容器里面:

        拷贝文件到我们的卷目录,超过了限制(tmpfs-size),空间限制为了 1m,会提示没有空间。 

tmpfs 失踪了

        创建一个普通的容器:

docker run -d -it --name tmpfs nginx:1.23.0 

        在容器里面写入一个文件 mylabel.txt:

        我们在宿主机上查找文件,文件被找到了,是因为他在容器的可写层:

        我们再创建个临时卷:

docker run -d --name tmpfs2 --tmpfs /app nginx:1.24.0

        进入容器,/app 目录下创建 mynewlabel.txt。

        在宿主机上查找 mynewlabel.txt,可以发现,文件找不到。

         所以 tmpfs 的内容不是存储在我们的容器的可写层里面的。更加进一步佐证其存储的位置是在内存上。


本篇到此结束,感谢你的阅读。

相关文章:

Docker Volume

"Ice in my vein" Docker Volume(存储卷) 什么是存储卷? 存储卷就是: “将宿主机的本地文件系统中存在的某个目录&#xff0c;与容器内部的文件系统上的某一目录建立绑定关系”。 存储卷与容器本身的联合文件系统&#xff1f; 在宿主机上的这个与容器形成绑定关系…...

开源计算机视觉库OpenCV常用的API介绍

阅读本文之前请参阅-----开源计算机视觉库OpenCV详细介绍 OpenCV&#xff08;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉和机器学习软件库&#xff0c;它提供了大量的API&#xff08;应用程序编程接口&#xff09;&#xff0c;用于处理图像和视频分析、对象检测、面…...

pytorch -- torch.nn下的常用损失函数

1.基础 loss function损失函数&#xff1a;预测输出与实际输出 差距 越小越好 - 计算实际输出和目标之间的差距 - 为我们更新输出提供依据&#xff08;反向传播&#xff09; 1. L1 torch.nn.L1Loss(size_averageNone, reduceNone, reduction‘mean’) 2. 平方差&#xff08;…...

daydayEXP: 支持自定义Poc文件的图形化漏洞利用工具

daydayEXP: 支持自定义Poc文件的图形化漏洞利用工具 基于java fx写的一款支持加载自定义poc文件的、可扩展的的图形化渗透测试框架。支持批量漏洞扫描、漏洞利用、结果导出等功能。 使用 经过测试,项目可在jdk8环境下正常使用。jdk11因为缺少一些必要的组件,所以jdk11版本工…...

无法访问云服务器上部署的Docker容器(二)

说明&#xff1a;记录一次使用公网IP 接口地址无法访问阿里云服务接口的问题&#xff1b; 描述 最近&#xff0c;我使用Docker部署了jeecg-boot项目&#xff0c;部署过程都没有问题&#xff0c;也没有错误信息。部署完成后&#xff0c;通过下面的地址访问后端Swagger接口文档…...

在Pycharm中运行Django项目如何指定运行的端口

方法步骤&#xff1a; 打开 PyCharm&#xff0c;选择你的 Django 项目。在菜单栏中&#xff0c;选择 “Run” -> “Edit Configurations...”。在打开的 “Run/Debug Configurations” 对话框中&#xff0c;选择你的 Django server 配置&#xff08;如果没有&#xff0c;你…...

Android将 ViewBinding封装到BaseActivity基类中(Java版)

在Android中使用Java语言将ViewBinding封装到基类中&#xff0c;操作步骤如下&#xff1a; 1、在项目的build.gradle文件中启用了ViewBinding&#xff0c;添加以下代码&#xff1a; android {...buildFeatures {viewBinding true} } 2、创建一个名为“BaseActivity”的基类&…...

JSP实现数据传递与保存(一)

一、Web开发步骤 1.1两类模式 后端——————前端 先有前端&#xff0c;前端用的时候直接调用 后端已实现注册接口&#xff0c;接口名为doRegister.jsp 前端此时&#xff1a; 前端的form表单中的action提交地址就只能填doRegister.jsp&#xff0c;即&#xff1a; <f…...

【论文笔记之 YIN】YIN, a fundamental frequency estimator for speech and music

本文对 Alain de Cheveigne 等人于 2002 年在 The Journal of the Acoustical Society of America 上发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载&#xff0c;但请务必注明出处。 论文链接&#xff1a;http://audition.ens.fr/adc/pdf/2002_…...

水印相机小程序源码

水印相机前端源码&#xff0c;本程序无需后端&#xff0c;前端直接导入即可&#xff0c;没有添加流量主功能&#xff0c;大家开通后自行添加 源码搜索&#xff1a;源码软件库 注意小程序后台的隐私权限设置&#xff0c;前端需要授权才可使用 真实时间地址拍照记录&#xff0c…...

NXP实战笔记(八):S32K3xx基于RTD-SDK在S32DS上配置LCU实现ABZ解码

目录 1、概述 2、SDK配置 2.1、IO配置 2.2、TRGMUX配置 2.3、LCU配置 2.4、Trgmux配置 2.5、Emios配置 2.6、代码实现 1、概述 碰到光电编码器、磁编码器等,有时候传出来的位置信息为ABZ的方式,在S32K3里面通过TRGMUX、LCU、Emios结合的方式可以实现ABZ解码。 官方…...

【深度好文】simhash文本去重流程

对于类似于头条客户端而言,推荐的每一刷的新闻都必须是不同的新闻,这就需要对新闻文本进行排重。传统的去重一般是对文章的url链接进行排重,但是对于抓取的网页来说,各大平台的新闻可能存在重复,对于只通过文章url进行排重是不靠谱的,为了解决这个痛点于是就提出了用simh…...

主流的开发语言和开发环境介绍

个人浅见&#xff0c;不喜勿喷&#xff0c;谢谢 软件开发是一个涉及多个方面的复杂过程&#xff0c;其中包括选择合适的编程语言和开发环境。编程语言是软件开发的核心&#xff0c;它定义了程序员用来编写指令的语法和规则。而开发环境则提供了编写、测试和调试代码的工具和平台…...

List去重有几种方式

目录 1、for循环添加去重 2、for 双循环去重 3、for 双循环重复坐标去重 4、Set去重 5、stream流去重 1、for循环添加去重 List<String> oldList new ArrayList<>();oldList.add("张三");oldList.add("张三");oldList.add("李四&q…...

使用C#+NPOI进行Excel处理,实现多个Excel文件的求和统计

一个简易的控制台程序&#xff0c;使用C#NPOI进行Excel处理&#xff0c;实现多个Excel文件的求和统计。 前提&#xff1a; 待统计的Excel格式相同统计结果表与待统计的表格格式一致 引入如下四个动态库&#xff1a; 1. NPOI.dll 2. NPOI.OOXML.dll 3. NPOI.OpenXml4Net.dll …...

华清远见嵌入式学习——驱动开发——day9

目录 作业要求&#xff1a; 作业答案&#xff1a; 代码效果&#xff1a; ​编辑 Platform总线驱动代码&#xff1a; 应用程序代码&#xff1a; 设备树配置&#xff1a; 作业要求&#xff1a; 通过platform总线驱动框架编写LED灯的驱动&#xff0c;编写应用程序测试&…...

formality:set_constant应用

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: formality:形式验证流程 scan mode func的功能检查需要把scan mode设置成0。...

sqllabs的order by注入

当我们在打开sqli-labs的46关发现其实是个表格&#xff0c;当测试sort等于123时&#xff0c;会根据列数的不同来进行排序 我们需要利用这个点来判断是否存在注入漏洞&#xff0c;通过加入asc 和desc判断页面有注入点 1、基于使用if语句盲注 如果我们配合if函数&#xff0c;表达…...

《The Art of InnoDB》第二部分|第4章:深入结构-磁盘结构-redo log

4.3 redo log 目录 4.3 redo log 4.3.1 redo log 介绍 4.3.2 redo log 的作用 4.3.3 redo log file 结构 4.3.4 redo log 提交逻辑 4.3.5 redo log 持久化逻辑 4.3.6 redo log 检查点 4.3.7 小结...

大模型安全相关论文

LLM对于安全的优势 “Generating secure hardware using chatgpt resistant to cwes,” Cryptology ePrint Archive, Paper 2023/212, 2023评估了ChatGPT平台上代码生成过程的安全性&#xff0c;特别是在硬件领域。探索了设计者可以采用的策略&#xff0c;使ChatGPT能够提供安…...

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果…...

[算法沉淀记录] 排序算法 —— 堆排序

排序算法 —— 堆排序 算法基础介绍 堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树&#xff0c;其中每个节点的值都必须大于或等于&#xff08;最大堆&#xff09;或小于或等于&am…...

C++ //练习 9.33 在本节最后一个例子中,如果不将insert的结果赋予begin,将会发生什么?编写程序,去掉此赋值语句,验证你的答案。

C Primer&#xff08;第5版&#xff09; 练习 9.33 练习 9.33 在本节最后一个例子中&#xff0c;如果不将insert的结果赋予begin&#xff0c;将会发生什么&#xff1f;编写程序&#xff0c;去掉此赋值语句&#xff0c;验证你的答案。 环境&#xff1a;Linux Ubuntu&#xff0…...

[corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape

前言 题目来源&#xff1a;竞赛官网 – 建议这里下载&#xff0c;文件系统/带符号的 vmlinux 给了 参考 [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape Exploiting poll_list Objects In The Linux Kernel – 原作者文章&#xff0c;poll_list 利用方式…...

thinkphp6定时任务

这里主要是教没有用过定时任务没有头绪的朋友, 定时任务可以处理一些定时备份数据库等一系列操作, 具体根据自己的业务逻辑进行更改 直接上代码 首先, 是先在 tp 中的 command 方法中声明, 如果没有就自己新建一个, 代码如下 然后就是写你的业务逻辑 执行定时任务 方法写好了…...

支持国密ssl的curl编译和测试验证(上)

目录 1. 编译铜锁ssl库2. 编译nghttp2库3. 编译curl4. 验证4.1 查看版本信息4.2 验证国密ssl握手功能4.3 验证http2协议功能 以下以ubuntu 22.04环境为例进行编译 本次编译采用铜锁sslnghttp2curl&#xff0c;使得编译出来的curl可以支持国密ssl&#xff0c;并且可以支持http2…...

包装类详解

概述 Java提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使用基本类型对…...

vue3与vue2的区别

Vue 3和Vue 2在以下几个方面有一些区别&#xff1a; 性能提升&#xff1a;Vue 3对渲染性能和内存占用进行了优化&#xff0c;使用了Proxy代理对象&#xff0c;比Vue 2的Object.defineProperty更高效。此外&#xff0c;Vue 3还引入了静态树提升&#xff08;Static Tree Hoisting…...

SSL OV证书和DV、EV证书的区别

在网站搭建的过程中和小程序开发过程中&#xff0c;很难免会有需要用到SSL证书的地方&#xff0c;但是目前数字证书种类繁多&#xff0c;该选择什么类型的证书成为了一个令人纠结的问题。 目前在市场上较为常见的证书分为三种&#xff1a;DV域名验证型证书&#xff1b;OV组织验…...

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…...

模板网站没有源代码/今日新闻摘抄

vue路由安装与基本使用vue嵌套路由vue动态路由&#xff08;路由组件传参&#xff09;vue路由重定向和一些其他的路由相关官方手册&#xff1a;https://router.vuejs.org/zh/一、vue路由安装与基本使用 在项目根文件夹下执行以下命令安装vue-ruoter: vue add router 执行命令后会…...

在美国做网站如何接入收款工具/软文范例大全800字

ESXi Server上的虚拟机分布于不同的Datastores&#xff0c;现有的服务器能够很好的按照如下的方式进行&#xff1a;每个Datastore运行一个Image&#xff0c;这个程序就是实现这样一个功能&#xff01;因为是在现有框架增加一些功能&#xff0c;所以这个小程序并没有那么的合理&…...

wordpress search url/win10优化工具

作为世界级别的电商平台来讲&#xff0c;想要运营好亚马逊店铺肯定是需要很大的困难的&#xff0c;那么接下来我就要告诉你该怎样去运营。 1、给自己店铺产品做测评 亚马逊测评&#xff0c;相信这个词对很多跨境电商卖家来说并不陌生&#xff0c;因为大家都知道它能迅速帮助自…...

ps怎么做网站页面/百度官网网站

阅读本文大概需要 2.8 分钟。来自&#xff1a;https://blog.csdn.net/xiaojimanman/article/details/18556703前几天&#xff0c;在其他网站上看到一个表情自动生成器&#xff0c;自己就试着做了一下&#xff0c;没想到还真给搞定了&#xff5e;目前&#xff0c;可以处理“臣妾…...

教育培训网站案例/产品推广运营方案

问题描述&#xff1a; ABP 禁用了多租户&#xff0c;在编辑一个实体记录后&#xff0c;能成功地保存数据&#xff0c;但数据列表中看不到这条记录。打开数据表查看&#xff0c;发现该实体记录的 TenantId 字段值成了 Null , 而不是预期的默认租户Id 1。 问题原因&#xff1a; 编…...

wordpress 扫码付款/天津百度seo推广

字符 描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如&#xff0c;n 匹配字符 "n"。\n 匹配一个换行符。序列 \\ 匹配 "\" 而 "\(" 则匹配 "("。^ 匹配输入字符串的开始位置。如果…...