数据卷(Data Volume)

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

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

特点:

  1. 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。

  2. 数据卷可以在多个容器之间共享和重用

  3. 对数据卷的更新,不会影响镜像

  4. 可以对数据卷里的内容直接进行修改,立马生效

  5. 卷会一直存在,即使挂载数据卷的容器已经被删除

创建一个数据卷

挂载目录

在docker run时通过-v参数来挂载

docker run -it -v 宿主机目录:容器内目录 容器id[:ro]

-v:挂载目录参数,如果宿主机目录不存在,会自动创建

[:ro]可选参数,是否只读,默认读写权限,则容器内目录只读

 

挂载文件

docker run -it -v 宿主机文件:容器内文件 容器id

注意:如果直接挂载一个文件,类似于vi这样的文本编译工具可能会造成文件的inode的改变,导致docker1.1.0以后会报错误信息。

-v 参数后宿主机文件可以不写,则随机生成一个目录挂载到容器内的文件

在Dockerfile中通过VOLUME来添加一个或者多个新的卷由该镜像创建的任意容器,但是不能映射到宿主机已经存在的目录。docker会自动在宿主机上创建目录来映射容器的目录,这样导致多个容器无法共享同一个数据卷。

语法:VOLUME["容器内目录"]

FROM ubuntu:12.04
VOLUME ["/datavolume1","/datavolume2"]
CMD "/bin/bash"

通过docker insepect 容器id可以查看挂载地址。

docker学习-数据管理(六)

 

 

数据卷容器

概念:创建一个容器A挂载数据卷,其他容器通过挂载这个容器A实现数据共享,挂载数据卷的容器A,就叫做数据卷容器。

命令:

docker run --volimes-from 容器名称

注意:

  1. 数据卷容器不需要启动

  2. 如果想要删除数据卷,就需要删除最后一个挂载的容器时,使用docker rm -v命令来删除容器

示例:

已知构建的镜像ubuntu3已经挂在了目录/datavolume1和/datavolume2,通过镜像ubuntu3启动容器dvt4,此时dvt4是一个数据卷容器

docker学习-数据管理(六)

 

通过命令可查看docker inspect dvt4

docker学习-数据管理(六)

此时创建一个容器,dvt5,挂载dvt4上,查看发现dvt5也存在2个挂载的目录

docker学习-数据管理(六)

通过docker inspect dvt5可以查看挂载的目录与dvt4的一致

docker学习-数据管理(六)

 

数据卷的备份和还原

docker学习-数据管理(六)

备份

原理:

通过创建一个容器来挂载一个数据卷容器,并在容器中将数据卷目录压缩,并将压缩目录映射到宿主机目录上。

docker run —-volumes-from 数据卷容器 -v 宿主机目录:压缩文件目录 - -name 容器名  镜像id tar cvf 压缩文件路径 数据卷目录1 数据卷目录2...

示例:

创建一个数据卷容器

docker学习-数据管理(六)

 

创建一个容器来备份数据卷

docker学习-数据管理(六)

 

查看备份文件

docker学习-数据管理(六)

 

还原

示例:

第一种方式:

docker学习-数据管理(六)

 

第二种方式:

  1. 创建一个数据卷容器

将容器内/dbdata挂载在本机的Users/wujian/dbdata目录上

docker run -v /Users/wujian/dbdata:/dbdata --name dvt-test centos:7

docker学习-数据管理(六)

  1. 创建一个容器,挂载在数据卷容器上

并且此容器与宿主机的压缩文件目录映射,并启动容器后,将压缩文件解压在/dbdata中,则就会映射到之前的数据卷容器中

docker run --volumes-from dvt-test --name dvt-untar -v /Users/wujian/backup:/backup centos:7 tar xvf /backup/backup.tar -C /dbdata

docker学习-数据管理(六)

docker学习-数据管理(六)

 

 

 

相关文章:

  • 2021-09-04
  • 2021-07-31
  • 2021-11-29
  • 2021-04-14
  • 2021-11-13
猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2021-06-08
  • 2021-11-29
  • 2022-12-23
相关资源
相似解决方案