简介

Docker镜像是由多个只读层添加而成,启动容器时,Docker加载值读镜像层并在镜像栈顶部添加一个读写层。

如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会在读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写曾中该文件的副本所隐层,这就是我们所说的写时复制,Elasticsearch也是用了写时复制。和这个略有不同。

默认情况下,容器不使用任何 volume,此时,容器的数据被保存在容器之内,它只在容器的生命周期内存在,关闭并重启容器,其数据不会受到影响,但是删除Docker容器,数据将会全部丢失。当然,也可以使用 docker commit 命令将它持久化为一个新的镜像。

问题

  • 存储于联合联合文件系统中,不易于宿主机访问;
  • 容器间数据共享不便。
  • 删除容器会导致数据全部丢失。

卷(volume)

“卷”是容器上的一个或者多个目录,此目录可以绕过联合文件系统,与宿主机上的某目录“绑定(关联)”。

Volume于容器化初始化之时即会创建,由base image提供的卷中的数据会于此期间完成复制。

数据卷可以在容器之间共享和重用。

对数据卷的更改是直接进行的。

更新映像时,不包括对数据卷的更改。

即使删除容器本身,数据卷也会保持

Volume的初衷时独立于容器的生命周期实现数据持久化,因此删除容器的时候既不会删除卷,也不会对哪怕未被引用的卷当作垃圾回收操作。

卷为docker提供了独立于容器的数据管理机制,我们可以把“镜像”看作成为静态的文件,例如“程序”,把卷类比为动态内容,比如“数据”,镜像可以重用,而卷可以共享;

卷实现了“程序(镜像)”和“数据(卷)”分离,以及“程序(镜像)”和“制作镜像的主机”分离,用户制作镜像时无需再考虑镜像运行的容器所在的主机的环境。

考虑到容器应用是需要持久存储数据的,可能是有状态的,如果考虑使用NFS做反向代理是没必要存储数据的,应用可以分为有状态和无状态,有状态是当前这次连接请求处理一定此前的处理是有关联的,无状态是前后处理是没有关联关系的,大多数有状态应用都是数据持久存储的,如mysql,redis有状态应用,在持久存储,如nginx作为反向代理是无状态应用,tomcat可以是有状态的,但是它有可能不需要持久存储数据,因为它的session都是保存在内存中就可以的,会导致节点宕机而丢失。session,如果有必要应该让它持久,这也算是有状态的。

对于Docker来说有两种类型的卷,每种类型都在容器中创业中存在一个挂载点,但其再宿主机上上的位置会有所不同:

Bind mount volume(绑定挂载卷):宿主机上的路径需要人工指定。容器中的路径需要指定。

Dokcer Managed volume(Docker管理卷):Docker守护进程在宿主机文件系统中所拥有的一部分中创建托管卷。自动自动

Docker管理管卷

[root@localhost ~]# docker run --name b2 -it -v /data  busybox
[root@localhost ~]# docker inspect b2

容器中:

绑定挂载卷

[root@localhost ~]# docker run --name b2 -it --rm -v /data/volumes/b2:/data  busybox  #运行一个b2名称的busybox的容器 再宿主机上的位置为/data/volumes/b2 再docker容器中的位置为data
[root@localhost ~]# docker inspect b2

宿主机:

Docker:

Docker查询

复制卷设置

当我们希望练习比较紧密的容器放置在一起的时候我们可以使用复制卷设置,让他们共享Network、IPC、UTS还可以共享存储卷。比如 Tomcat和Nginx这种的,所以再以后我们可以专门做一个基础卷。

[root@localhost ~]# docker run --name infracon -it  -v /data/infracon/volume/:/data/web/html busybox  #创建基础卷
[root@localhost b2]# docker run --name nginx --network container:infracon --volumes-from infracon -it busybox          #复制infracon的卷配置
[root@localhost ~]# docker inspect infracon

[root@localhost ~]# docker inspect nginx

这样基础支持的容器我们就创建起来。

Docker存储卷基本操作相关推荐

  1. Docker存储卷简述和测试

    Docker存储卷 文章目录 Docker存储卷 COW机制 什么是存储卷 使用存储卷的好处 为什么要用存储卷 存储卷管理方式 存储卷的分类 容器数据管理 COW机制 Docker镜像由多个只读层叠加 ...

  2. Docker 基本操作 数据卷 -- docker 数据卷基本操作、挂载数据卷

    文章目录 1. docker 数据卷基本操作 1.1 容器与数据耦合的问题 1.2 数据卷介绍 1.3 数据卷的基本语法 1.4 创建一个数据卷,并查看数据卷在宿主机的目录位置 1.5 小结 2. 挂 ...

  3. Docker存储卷volume(V18.X)

    文章目录 1. 简介 1.1 介绍 1.2 作用 1.3 分类 2. 存储卷使用 2.1 设置卷的命令 2.1.1 -v或`--volume`选项指定卷 2.1.2 `--mount`指定卷 2.1. ...

  4. Docker存储卷(V18.X)

    Docker存储卷(V18.X) 原文: Docker存储卷(V18.X) 简介 介绍 Docker的存储卷称之为volume,本质上容器上的一个或者多个目录,而这些目录绕过了联合文件系统,与宿主机中 ...

  5. Docker 学习6 Docker存储卷

    一.什么是存储卷 二.为什么要用到数据卷 三.数据卷是怎么被管理的 四.存储卷种类 五.在容器中使用存储卷 1.只声明容器路径 [root@localhost docker]# docker run ...

  6. docker存储卷篇

    在之前的文章中,我们说过,容器的服务如果需要提供给外部访问,需要把端口映射出来.docker的数据存储卷也是一样的道理,我们在使用docker的时候,有些应用是需要保存数据的,这些需要保存数据的应用就 ...

  7. Docker 存储卷

    docker在运行时是基于分层镜像得联合挂载机制来实现的,而在这种分层构建镜像联合挂载并在最上层实现读写层的时候会发现一个特点,所有的有容器中的进程所生成的数据都是被最上面的可写层所保存而这个可写层本 ...

  8. docker存储卷的使用

    COW技术原理(Copy On Write,写时复制) Ø 直接映射原始盘的数据内容 Ø 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘 Ø 对前端盘的修改不回写到原始盘 Docker镜像 ...

  9. Docker存储卷(Volume)

    简介 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层 ...

最新文章

  1. 新一代(New Generation)测试框架TestNG
  2. CMU Facebook论文解读 | 非局部神经网络(附代码实现)
  3. 14.11类的成员修饰符
  4. 《赛博朋克 2077》与《对马岛之魂》的「不自由感」究竟从何而来?
  5. The number of requested virtual cores per node 3 exceeds the maximum number of virtual cores 2
  6. html 输入框自动缩短 一行内显示,JQuery UI组合框自动补全功能改进版(即时全部显示+input内容保存)...
  7. L1-056 猜数字 C语言,PAT L1-032 Left-pad
  8. python argv 详解_详解sys.argv[]的使用方法
  9. 在Ubuntu 14.04(Trusty Tahr)上安装Plesk
  10. vs2003 打开VS.NET项目时遇到 “无法从web服务器获取项目文件” 解决方案
  11. virtual关键字的使用(C# 参考)
  12. 如何删除尾随换行符?
  13. 付费圈子来了,去还是不去?
  14. 管理感悟:看清软件功能的“二八定律”
  15. Kafka消息队列原理总结
  16. 解决explorer.exe 应用程序错误,内存不能为 read或written的解决方法小结
  17. 【论文笔记】视频分类系列 Temporal Relational Reasoning in Videos (TRN)
  18. 2021年美容师(初级)报名考试及美容师(初级)考试试卷
  19. 基于JAVA的KTV点歌系统,管理系统。
  20. 国债期货matlab,Matlab和国债期货的那些事儿~(四)——关键利率法在利率风险管理中的运用...

热门文章

  1. wordpress发布模块_微慕WordPress小程序专业版v3.0发布
  2. mysql 存储过程 转义_mysql存储过程中的 sql语句符号问题
  3. 分布式协议学习笔记(一) Raft 选举
  4. 【转】Jmeter + DadBoby 安装使用
  5. About_PHP_验证码的生成
  6. jquery学习之路jquery之一:jquery选择元素的方法,太神了 2012.8.2
  7. MDF文件在SQL Server数据库中恢复技术
  8. ssm访问html乱码_SpringMVC+jdbc和SSM整合
  9. c语言a b的和 不用加号,力扣(LeetCode)刷题,简单题(第16期)
  10. 小学五年级计算机教学工作总结,小学五年级数学教师工作总结(精选8篇)