Data Volume

Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中。

Data Volume 有以下特点:

1、Data Volume 是目录或文件,而不是没有格式化的磁盘(块设备)

2、容器可以读写 volume 中的数据

3、volume 数据可以被永久的保存,即使使用它的容器已经销毁

下面几个场景:

1、Database 软件 vs Database 数据

2、Web 应用 vs 应用产生的日志

3、数据分析软件 vs input/output 数据

4、Apache Server vs 静态 HTML 文件

存储方案应该是这样的:

1、前者放在数据层中。因为这部分内容是无状态的,应该作为镜像的一部分

2、后者放在 Data Volume 中。这是需要持久化的数据,并且应该与镜像分开存放

docker 提供了两种类型的 volume:

bind mount

docker managed volume

bind mount

将 host 上已存在的目录或文件 mount 到容器

-v 的格式为 <host path>:<container path>

/usr/local/apache2/htdocs 就是 apache server 存放静态文件的地方。由于 /usr/local/apache2/htdocs 已经存在,原有数据会被隐藏起来,取而代之的是 host $HOME/htdocs/ 中的数据

docker run -d -p 80:80 -v /root/htdocs:/usr/local/apache2/htdocs httpd

更新一下/root/htdocs/index.html 中的内容,再查看一下

Docker host 中的修改确实生效了,bind mount 可以让 host 与容器共享数据。这在管理上是非常方便的。

将容器删除了,bind mount 也还在

bind mount 时还可以指定数据的读写权限,默认是可读可写,可指定为只读:

docker run -d -p 80:80 -v /root/htdocs:/usr/local/apache2/htdocs:ro  httpd

除了 bind mount 目录,还可以单独指定一个文件:

docker run -d -p 80:80 -v /root/htdocs/index.html:/usr/local/apache2/htdocs/new_index.html httpd

使用 bind mount 单个文件的场景是:只需要向容器添加文件,不希望覆盖整个目录的数据。

 :host 中的源文件必须要存在,不然会当作一个新目录 bind mount 给容器

mount point 的应用场景:

1、将源代码目录 mount 到容器中,在 host 中修改代码就能看到应用的实时效果

2、将 mysql 容器的数据放在 bind mount 里,这样 host 可以方便地备份和迁移数据

bind mount 的缺点:

bind mount 需要指定 host 文件系统的特定路径,这就限制了容器的可移植性,当需要将容器迁移到其他 host,而该 host 没有要 mount 的数据或者数据不在相同的路径时,操作会失败。

-----------------------------------------------引用来自----------------------------------------------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587711&idx=1&sn=271538bc7b5a8c0684d629604271189a&chksm=8d3080e6ba4709f0ba0335379ca6c4a270a1811de404144ff653a807930f13b3cb8bd934a5de&scene=21#wechat_redirect

第 6 章 存储 - 039 - Data Volume 之 bind mount的更多相关文章

  1. Data Volume 之 bind mount - 每天5分钟玩转 Docker 容器技术(39)

    storage driver 和 data volume 是容器存放数据的两种方式,上一节我们学习了 storage driver,本节开始讨论 Data Volume. Data Volume 本质 ...

  2. 039、Data Volume 之 bind mount (2019-02-28 周四)

    参考https://www.cnblogs.com/CloudMan6/p/7142150.html     Date Volume 本质上是Dokcer host文件系统中的目录或者文件,能够直接被 ...

  3. 37-Data Volume 之 bind mount

    storage driver 和 data volume 是容器存放数据的两种方式,上一节我们学习了 storage driver,本节开始讨论 Data Volume. Data Volume 本质 ...

  4. docker的volume和bind mount究竟有什么区别?

    不知道你在使用docker的时候,有没有注意到volume mount和bind mount的使用? 进一步说,他们之间的区别到底是什么? 接下来的内容,我们就为你揭开他们的神秘面纱. 相同之处 首先 ...

  5. 第 6 章 存储 - 042 - 用 volume container 共享数据

    volume container volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volu ...

  6. 第 6 章 存储 - 043 - data-packed volume container

    data-packed volume container 将数据打包到镜像中,然后通过 docker managed volume 共享 1.先用Dockerfile 构建镜像 ADD 将静态文件添加 ...

  7. 将数据挂载到 docker 容器中的3种方式:volume、bind mount、tmpfs

    出处:https://deepzz.com/post/the-docker-volumes-basic.html

  8. centos7下安装docker(13.1docker存储--data volume)

    我们现在知道docker 有两种存储方式:storage driver和data volume stroage driver这种存储方式主要是存储那些无状态的数据,是镜像层和容器层组成的,而data ...

  9. 第 6 章 存储 - 040 - docker managed volume

    docker managed volume 与 bind mount 在最大区别是不需要指定 mount 源,指明 mount point 就行了 通过 -v 告诉 docker 需要一个 data ...

随机推荐

  1. Springbooot +Mybaties 配置数据库多数据源

    前言 在实际项目中,我们可能会碰到在一个项目中会访问多个数据库的情况.针对这种情况,我们就需要配置动态的数据源了.一般按照以下步骤即可 一.在启动类上添加注解 二.在application.prope ...

  2. overture里设置踏板标记

    在学习如何设置踏板标记之前,我们先来了解什么是踏板标记.踏板标记一般是使用在乐谱上,众所周知,钢琴有三个踏板,每个踏板的作用都不一样:右边的踏板称为“延音踏板”,是用来延长琴弦振动的时间,使音延长的效 ...

  3. topcoder srm 693 div1 -3

    1.给出一个$n$个顶点的无向带权图.其中顶点$i,i+1$之间存在边,$i,i+2$之间存在边.而且仅有这些边.现在删掉其中的一些边,剩下的边满足图仍然是2联通的情况下使得权值和最小? 思路:其实就 ...

  4. 简单明了的掌握diff命令? 参考: http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html

    diff是比较两个 文本文件, 或目录,(中名字相同的文件) diff 是按行来比较的, 只要两个对应的行, 不完全一致, 就报告为不同, 否则就视为相同. (一行中任意一点的不同...) 检查时, ...

  5. Docker 命令收集

    Docker 命令收集 1.删除所有容器 docker rm $(docker ps -a -q) 2.删除所有镜像 docker rmi $(docker images -q) 3.启动镜像 doc ...

  6. 【Spring Security】三、自定义数据库实现对用户信息和权限信息的管理

    一 自定义表结构 这里还是用的mysql数据库,所以pom.xml文件都不用修改.这里只要新建三张表即可,user表.role表.user_role表.其中user用户表,role角色表为保存用户权限 ...

  7. R语言 union、setdiff、insect

    union 求两个向量的并集集合可以是任何数值类型 union(x=1:3, y=2:5)[1] 1 2 3 4 5 union(x=c("abc", "12" ...

  8. Asp.Net 之 js/jquery获取服务器端控件

    由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,总结有以下3种方法:服务器控件代码:<asp:TextBox ID="txtUserID& ...

  9. 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)

    一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25  16:29:19   对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...

  10. [AtCode 4104] Small and Large Integers

    题目链接:https://abc093.contest.atcoder.jp/tasks/abc093_b?lang=en 这个题虽然很水,但是还是很容易踩坑,比如我,直接想到了[b,a]之间的长度和 ...