docker (容器数据卷、创建、读写规则)-day03

一、容器数据卷概念

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:数据卷的设计目的就是数据的持久化完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

类似于Redis中的rdb和aof文件,redis挂了也可以覆盖还原。

  • 数据卷可在容器之间共享或重用数据
  • 容器和宿主机之间数据共享
  • 卷中的更改可以直接实时生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

二、 为容器添加数据卷(重点)

2.1 添加数据卷与宿主机连接

础知识:

-v 是挂载硬盘

–privileged=true 的作用是允许目录挂载

执行命令: 

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名读写规则:1、认就是rw镜像名docker run -it--privileged=true-v/宿主机绝对路径目录:/容器内目录:rw  2、容器实例内部被限制,只能读取不能写(限制容器的只读)docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录:ro 镜像名

 如图::创建容器卷 :  -v /tmp/host_data:/tmp/docker_data ,并在容器卷:/tmp/docker_data目录内创建syf.text 文件

[root@syf ~]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED         SIZE
registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu   1.0       5166bfe283d8   29 hours ago    189MB
tomcat                                                     latest    fb5657adc892   23 months ago   680MB
redis                                                      latest    7614ae9453d1   23 months ago   113MB
ubuntu                                                     latest    ba6acccedd29   2 years ago     72.8MB[root@syf ~]# docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=myubuntu20231201 ubunturoot@1ac042f28ff6:/# cd tmp
root@1ac042f28ff6:/tmp# ls
docker_data
root@1ac042f28ff6:/tmp# cd docker_data/root@1ac042f28ff6:/tmp/docker_data# touch syf.text
root@1ac042f28ff6:/tmp/docker_data# ls
syf.text

1、宿主机查看到syf.text文件,证明文件共享。

2、在容器中文件输入hello,在宿主机中也能看到内容,反之在宿主机中修改也一样,双方共享

[root@syf host_data]# pwd
/tmp/host_data
[root@syf host_data]# ls
syf.textroot@1ac042f28ff6:/tmp/docker_data# echo 'hello'>syf.text 
root@1ac042f28ff6:/tmp/docker_data# cat syf.text 
hello
2.2 查看数据卷

即使容器停止了,在宿主机操作数据卷,等到容器重新启动了也能实现数据共享

 docker inspect 容器id
[root@syf host_data]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
1ac042f28ff6   ubuntu    "bash"    15 minutes ago   Up 15 minutes             myubuntu20231201[root@syf host_data]# docker inspect 1ac042f28ff6

如下图 :docker inspect 1ac042f28ff6命令执行,查看  Mounts 挂载属性

"Mounts": [{"Type": "bind","Source": "/tmp/host_data","Destination": "/tmp/docker_data","Mode": "","RW": true,"Propagation": "rprivate"}]

三、容器之间的继承

重点:  要继承  上面 新建的这个容器卷 /tmp/host_data1:/tmp/docker_data1

docker run -it  --privileged=true --volumes-from 父类  --name=容器名 镜像名

 步骤1:新建一个容器卷

  •  创建新的容器数据卷,宿主机和docker容器的挂载目录如下:  /tmp/host_data1:/tmp/docker_data1
  • docker容器内新建 syf1.text,并写入hello two进入文本
[root@syf /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@syf /]# docker run -it --privileged=true -v /tmp/host_data1:/tmp/docker_data1 --name=myubuntu20231202 ubunturoot@b422c2ec3b26:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  varroot@b422c2ec3b26:/tmp# cd /tmp/docker_data1/root@b422c2ec3b26:/tmp/docker_data1# touch syf1.textroot@b422c2ec3b26:/tmp/docker_data1# echo 'hello two'>syf1.text 
root@b422c2ec3b26:/tmp/docker_data1# ls
syf1.text
root@b422c2ec3b26:/tmp/docker_data1# cat syf1.text 
hello two

 步骤二:继承上面 名称为  myubuntu20231202 的容器卷,可以看到容器卷目录也继承过来了


[root@syf ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                     PORTS     NAMES
b422c2ec3b26   ubuntu    "bash"    36 minutes ago   Exited (0) 6 minutes ago             myubuntu20231202[root@syf ~]# docker run -it  --privileged=true --volumes-from myubuntu20231202  --name=myubuntu20231202Copy ubuntu
root@c79b57d0ff38:/# cd /tmp/docker_data1/
root@c79b57d0ff38:/tmp/docker_data1# ls 
syf1.text
root@c79b57d0ff38:/tmp/docker_data1# cat syf1.text 
hello two

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

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

相关文章

JAVA代码优化:异步任务管理器

异步任务管理器(AsyncManager),用于执行异步任务并管理任务调度线程池。 实现了一个简单的异步任务管理器,通过调度线程池来执行异步任务,并提供了对任务调度线程池的关闭方法。这样可以方便地处理需要异步执行的任务…

python列出多重继承类的每个对象属性

1 python列出多重继承类的每个对象属性 1.1 列出实例属性 python通过__dict__列出实例属性。 (1) 实例.__class__:获取实例所属类。 (2) 类.__name__:获取类的名称。 (3) 实例.…

js进阶笔记之Promise

目录 为什么用Promise Promise的基本语法 Promise的then方法 then的链式调用 Promise的相关方法 为什么用Promise JS代码分为同步代码和异步代码 同步: 代码依次执行,上一个任务完成后,下一个任务才执行 异步 遇到耗时任务不必等待其完成&#xf…

Java项目调用C/C++ SDK的方案汇总

Java项目调用C/C SDK的方案汇总 背景调研JNIJNativeJNAJavaCPP 背景 Java项目中需要调用到一个C项目,于是对目前通用的解决方案做了一些调研,这里做一个汇总。 调研 JNI JNI:Java Native Interface,JNI是一套编程接口&#xf…

基于社区电商的Redis缓存架构-库存模块缓存架构(下)

基于缓存分片的下单库存扣减方案 将商品进行数据分片,并将分片分散存储在各个 Redis 节点中,那么如何计算每次操作商品的库存是去操作哪一个 Redis 节点呢? 我们对商品库存进行了分片存储,那么当扣减库存的时候,操作…

《代码整洁之道》摘抄

《代码整洁之道:程序员的职业素养》摘抄 1 专业主义(开发人员应该怎么保证代码质量) 专业人士,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在所难免。所以,雄心勃勃的专业人士们,你们…

PyEcharts快速上手_Python数据分析与可视化

PyEcharts快速上手 导入图表类型添加数据设置图表样式输出图表链式调用 导入图表类型 和其他库的导入方法一样,在绘图之前首先要在文件开头导入所需图表类型。 from pyecharts.charts import BarBar 类型是柱状图/条形图在 pyEcharts 中的英文名。 pyEcharts 中有…

vr工业制造流程3D模拟仿真可视化展示

工业仿真3D数字化展示系统具有多方面的独特之处,主要体现在以下几个方面: 1、真实感和交互性:该系统可以将实际的工业设备、产品、场景等进行数字化建模,通过三维图形技术将其呈现在计算机屏幕上,使用户可以在虚拟环境…

Python中的并发编程

目录 一、引言 二、Python中的线程 1、线程的概念 2、创建线程 3、线程同步和锁 4、线程池 三、Python中的进程 1、进程的概念 2、创建进程 四、Python中的异步IO 1、异步IO的概念 2、异步IO的实现 3、异步IO的并发执行 五、总结 一、引言 并发编程是一种计算机…

【漏洞复现】智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC

漏洞描述 智跃人力资源管理系统是基于B/S网页端广域网平台,一套考勤系统即可对全国各地多个分公司进行统一管控,成本更低。信息共享更快。跨平台,跨电子设备。智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在SQL注入漏洞,攻击者可通过该漏洞获取数据库中的信…

100W用户、8000W流量在线贺卡应用架构如何优化?

文章目录 🔊博主介绍🥤本文内容📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

数据管理系统-week10-自由访问控制

文章目录 前言一、用户管理用户管理语句介绍二、数据库管理三、特权(重点考点)Administrative (global) privileges数据库特权表权限列权限四、角色参考文献前言 这节课主要讲了用户管理数据库的具体语句,数据库特权当中的全局特权,数据库特权,表特权与列特权的使用与注意…

GOLAND搭建GIN框架以及基础框架搭建

创建GO环境文件夹 终端输入安装GIN go get -u github.com/gin-gonic/gin如果遇到超时错误 package golang.org/x/net/html: unrecognized import path "golang.org/x/net/html": https fetch: Get "https://golang.org/x/net/html?go-get1": dial tcp …

KubeShark: Kubernetes的Wireshark

Wireshark可以帮助我们抓取并分析网络数据包,理解网络中发生的事情,那是否有工具可以帮助我们理解在K8S集群中发生的事情,帮助排查集群故障,Kubeshark就是这样的工具。原文: KubeShark: Wireshark for Kubernetes[1] 简介 Wiresha…

【动态代理详解】

动态代理 知道什么是动态代理以及动态代理能干什么就可以 代理的概述 什么是动态代理 ​ 使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理&…

GnuCash macos 设置中文的方法

一、环境: macos 13.6.1 gnucash 5.4-2 二、查看系统默认语言: defaults read -g AppleLocale 三、设置gnucash应用语言: defaults write $(mdls -name kMDItemCFBundleIdentifier -raw /Applications/GnuCash.app) AppleLanguages "…

【Oracle】数据库登陆错误:ORA-28000:the account is locked解决方法

问题描述 在连接Oracle数据库的时候出现了ORA-28000:the account is locked报错,登录账号被锁定,出现这种情况就需要将被锁定用户解锁。 解决方法 解锁方法就是通过用system账号登录数据库,然后修改被锁定账户状态,具体如下图所示…

LINQ-123 题外篇之IEnumerable和IQueryable

这两天又学习了2篇&#xff0c;记录下&#xff1a; IEnumerable and IQueryable in C# - Dot Net Tutorials Differences Between IEnumerable and IQueryable in C# - Dot Net Tutorials 实现接口IEnumerable和IQueryable是使用LINQ查询的必要条件。 关于 IEnumerable<…

51爱心流水灯32灯炫酷代码

源代码摘自远眺883的文章&#xff0c;大佬是30个灯的&#xff0c;感兴趣的铁汁们可以去看看哦~&#xff08;已取得原作者的许可&#xff09;&#xff1a;基于STC89C51单片机设计的心形流水灯软件代码部分_单片机流水灯代码_远眺883的博客-CSDN博客 由于博主是个小菜鸡&#xff…

SSM+VUE的增删改查

目录 后端代码 mapper.xml controller 前端代码 api》action.js 后端代码 mapper.xml <!--模糊查询--><select id"selectLike" parameterType"com.zking.spboot.model.Book" resultMap"BaseResultMap">select * from t_book&l…