1. 数据卷:Data Volume有以下特点∶
1>. Data Volume是目录或文件,而非没有格式化的磁盘(块设备)。
2>. 容器可以读写volume中的数据。
3>. volume 数据可以被永久的保存, 即使使用它的容器已经销毁。
2. DataVolume的使用:
通过-v参数格式为 <host path>∶<container path>
1>. 运行一个容器,并创建一个数据卷挂载到容器的目录上:
[root@node1 ~]# docker run -itd -v /web busybox /bin/bash
2>. 运行一个容器,本地创建/test目录,挂载到容器的/web目录上:
[root@node1 ~]# mkdir test
[root@node1 ~]# docker run -itd -v /root/test:/web busybox /bin/bash
即在容器中的" /web "目录下的数据,保存在了宿主机的" /root/test "目录下。
3. 数据卷容器(Data Volume Dontainers):
如果用户需要在容器之间共享一些持续更新的数据,最简单的方法就是使用数据卷容器,其实数据卷容器就是一个普通的容器,只不过是专门用它提供数据卷供其他容器挂载使用。
Data Volume Dontainers使用∶
1>. 创建一个名为dbser的数据卷,并在其中创建一个数据卷挂载到/test下:
[root@node1 ~]# docker run -it -v /root/test:/dbdata --name dbser busybox
2>. 其他容器使用" --volumes-from "参数去挂载dbdata数据卷,其他容器中就会有dbser中的/dbdata目录及目录下的数据:
[root@node1 ~]# docker run -itd --volumes-from dbser --name db1 busybox
[root@node1 ~]# docker run -itd --volumes-from dbser --name db2 busybox
3>. 可以多次使用" --volumes-from "参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了的容器来挂载数据卷∶
[root@node1 ~]# docker run -itd --name db4 --volumes-from db1 --volumes-from db2 busybox
[root@node1 ~]# docker run -itd --name db3 --volumes-from db1 busybox
注意∶使用" --volumes-from "参数所挂载数据卷的容器自身并不需要保持在运行状态。
如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用" docker rm -v "命令来指定同时删除关联的容器。
4. 备份、恢复和迁移数据卷:
1>. 备份数据卷: 通过参数" --volumes-from "从数据卷挂载数据卷,然后备份数据卷中的数据,例如∶
[root@node1 ~]# cd /root/test
##创建文件
[root@node1 test]# rouch test{1,3}
##创建dbdata数据卷
[root@node1 ~]# docker run -v /root/test:/dbdata --name dbdata busybox
##创建一个容器挂载dbdata数据卷,并备份容器中"/dbdata"下的数据
[root@node1 ~]# docker run --volumes-from dbdata -v $(pwd):/badckup busybox tar cvf /backup/backup.tar /dbdata
创建一个新的容器,将宿主机本地目录挂载到/backup,然后将数据卷容器dbdata的数据卷
(/dbdata)打包到/backup/backup.tar。然后在宿主机的当前目录下就可以得到backup.tar。
2>. 恢复数据卷:将备份的数据恢复到原有容器或者其他任何容器。假设我们想把backup.tar的数据恢复到一个新的容器 dbdata2∶
##创建dbdata2容器:
[root@node1 ~]# docker run -v /dbdata name dbdata2 busybox /bin/bash
##解压宿主机当前路径下的/backup/backup.tar到dbdata2容器中的/dbdata
[root@node1 ~]# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar