Docker容器数据卷


在这里插入图片描述

一、数据卷概述

1.1、数据卷简介

  • 数据卷是一种特殊的目录关系,它将宿主机目录与容器中的目录进行了直接关联,在任何一端目录中的文件写操作,就是对数据卷目录的操作,在另一端都会发生相应变化。相互关联的宿主机端目录与容器端目录,我们一般称为数据卷的挂载点。

数据卷的设计目的就是为了实现数据持久化,完全独立于容器的生命周期。因此,容器删除时,不会删除其挂载的数据卷。

1.2、数据卷的特性

  1. 数据卷可在容器之间共享或重用,本地与容器间传递数据更高效
  2. 可以对数据卷里的内容直接修改,修改后立马生效,无论是容器内操作还是本地操作
  3. 数据卷中的更改不会包含在镜像的更新中
  4. 数据卷会一直存在,直到没有容器使用它,即使挂载数据卷的容器已经被删除

二、创建数据卷

2.1、创建读写数据卷

  • 读写数据卷指的是容器对挂载点的文件具有读写权限,数据卷是在使用docker run启动容器时指定的。
docker run –it –v /宿主机目录绝对路径:/容器内目录绝对路径 镜像名称:tag

说明:无论是宿主机还是容器,如果指定的挂载点目录不存在,docker都会自动创建。

小例子:创建读写数据卷
创建容器,进入并查看/opt/下的内容
在这里插入图片描述

查看宿主机下/opt/下的内容
在这里插入图片描述

操作宿主机
在这里插入图片描述

查看容器内发现同样生成了test.txt并且里面内容和宿主机相同
在这里插入图片描述

相反地,在容器中操作test.txt而在宿主机的test.txt同样有效
在这里插入图片描述
在这里插入图片描述

2.2、创建只读数据卷

  • 只读数据卷指的是容器对挂载点的操作权限是只读的,宿主机操作权限始终是读写的。因为有些情况下,为了防止容器在运行过程中对文件产生修改,就需要创建只读数据卷。
docker run –it –v /宿主机目录绝对路径:/容器内目录绝对路径:ro 镜像名称:tag

三、数据卷共享

  • 当一个容器与另一个容器使用相同的数据卷,即不仅共享了宿主机中的挂载点目录,同时还具有相同的容器挂载点目录。此时就称这两个容器实现了“数据卷共享”。数据卷容器是实现数据卷共享的一种非常有效的方案。

  • 当一个容器C启动运行时创建并挂载了数据卷,若其它容器也需要共享该容器C的数据卷,此时容器C就称为数据卷容器。其它容器在docker run启动时只需要通过–volumes-from[容器C] 选项即可实现数据卷共享。

docker run -it --volumes-from 数据卷容器 镜像名称:tag

小例子:通过数据卷容器实现数据卷共享
以busybox为基础镜像创建容器base(数据卷容器)
在这里插入图片描述

通过–volumes-from命令实现数据卷共享
在这里插入图片描述

在宿主机下操作挂载点
在这里插入图片描述

查看容器内发现同样生成了test.txt并且里面内容和宿主机相同
在这里插入图片描述

再新建一个容器实现数据卷共享,发现同样有test.txt并且内容和宿主机相同
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_hsy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值