1.Docker容器的数据卷
1.什么事数据卷
- 数据卷是经过特殊设计的目录,可以绕过联合文件系统(ufs),为一个或多个容器提供访问。
- 数据卷设计的目的,在于数据的永久化,他完全独立与容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。数据卷设计的目的,在于数据的永久化,他完全独立与容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。
2.数据卷的特点
- 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。
- 数据卷可以在容器之间共享和重用数据卷可以在容器之间共享和重用
- 可以对数据卷里的内容直接进行修改可以对数据卷里的内容直接进行修改
- 数据卷的变化不会影响镜像的更新数据卷的变化不会影响镜像的更新
- 卷会一直存在,即使挂载数据卷的容器已经被删除卷会一直存在,即使挂载数据卷的容器已经被删除
3.为容器添加数据卷
testvolume本机目录如果不存在会自动创建 data为docker容器目录
在容器的data目录创建一个test文件
退出容器
查看本地主机/testvolume目录
可以看出数据卷添加成功!
通过docker inspect命令查看容器状态
4.为数据卷添加访问权限
docker run -it -v ~/datavolume:/data:ro ubuntu /bin/bash
ro 表示只读权限
5.使用Dockerfile构建包含数据卷的镜像
Dockerfile如下,使用docker build 构建项目即可成功挂载
可以看出容器中的data目录已经挂载,需要将这个数据卷容器共享。
2.Docker的数据卷容器
1.什么是数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器
2.挂载数据卷容器的方法
docker run --volumes-from [容器名]
例如:
docker run -it --name dvtest --volumes-from dev1 ubuntu /bin/bash
dev1为数据卷容器 进入dvtest的data目录可以看到刚刚数据卷容器创建的文件,表示挂载数据卷容器成功
当删除数据卷容器时,挂载了数据卷容器的容器中的数据也不会消失
3.Docker数据卷的备份和还原
1.数据备份方法
docker run --volumes-from [容器名] -v $(pwd):/backup ubuntu
tar cvf /backup/backup.tar [容器数据卷]
例如:
docker run --volumes-from dev -v ~/backup:/backup --name dvtbackup ubuntu tar cvf /backup/dev.tar /data
dev为需要备份的数据卷容器
~/backup表示本地存储的备份数据的目录
/backup数据卷容器存放数据卷数据的目录
dvtbackup表示备份数据容器的名称
/backup/dev.tar表示的名称 /data备份的数据目录
2.数据还原方法
docker run --volumes-from [容器名] -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar [容器数据卷数据]