Docker容器的数据卷以及数据卷容器

什么是数据卷(Data Volume)

  • 数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。

  • 数据卷设计的目的,在于数据的永久化,它完全独立与容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。

  • 下图是数据卷的结构图
    在这里插入图片描述
    由上图可以看出

  • Docker的数据卷是独立于Docker的存在,它存在于宿主机中,生命周期与Docker容器是分离的;

  • Docker可以是目录也可以是文件;

  • Docker容器可以通过数据卷和宿主机进行文件共享;

  • 同一个目录或者文件可以支持多个容器的访问,实现了多个容器的的数据访问和交换

数据卷(Data Volume)的特点

  • 数据卷在容器启动是初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。
  • 数据卷可以在容器之间共享和重用
  • 可以对数据卷里的内容直接进行修改
  • 数据卷的变化不会影响镜像的更新
  • 卷会一直存在,即使挂载数据卷的容器已经删除

数据卷的使用

  • 为容器添加数据卷并在数据卷中创建一个文件
# docker run -it -v /usr/local/Docker/datavolume:/data ubuntu /bin/bash
# touch /data/c1 
# echo "I'm in container">/data/c1

在这里插入图片描述
此时查看宿主机的 /usr/local/Docker/目录,发现目录下多了一个datavolume的目录,在这个目录里边,有在容器中创建的文件,
在这里插入图片描述
查看容器信息发现包含了创建的数据卷的信息,也就是说可以通过docker inspect查看是否挂载了数据卷

#docker ps -l
#docker inspect bd6578d81ca2、

在这里插入图片描述

  • 为数据卷添加访问权限
    如为一个数据卷添加只读权限
docker run -it -v /usr/local/Docker/datavolume:/data:ro ubuntu /bin/bash

在这里插入图片描述
如图所示,数据卷在这个容器中权限为只读(Read-only)
补充,这个数据卷在宿主机中也只有只读权限,不过可以在数据卷下追加文件
在这里插入图片描述
查看第二个容器的详细信息发现在Mounts挂载下,可以看到/data数据卷相关信息:
   来源为宿主机的usr/local/Docker/datavolume
   mode为“ro”,"RW"写权限是false
在这里插入图片描述
对比第一个创建的数据卷
在这里插入图片描述
使用Dockerfile构建数据卷的镜像
Dockerfile指令: VOLUME["datavolume1","datavolume2"] *注意,Dockerfile创建的数据卷本地来源不能自定义,由Docker默认创建,有多个数据卷的话用“,”隔开*
实例:

Dockerfile

#First Docker of tanghc
FROM ubuntu:18.04
VELUME ["datavolume1","datavolume2"]
CMD /bin/bash

构建容器

 sudo docker build -t dormancypress/dvt .

在这里插入图片描述
运行该容器可以看到,目录下有两个数据卷

在这里插入图片描述
退出,用Docker inspect查看刚创建的容器的信息

docker inspect dvt3

在这里插入图片描述
可以看到,数据卷指定的本地路径是由Docker主动创建的

用Dockerfile创建数据卷的容器间,是不能共享数据卷的,因为每次都会初始化数据卷指定的本地文件,如果还是需要共享,可以用数据卷容器
-->什么是数据卷容器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值