使用数据卷容器
创建数据卷容器后,我们可以通过
--volumes-from选项,将一个数据容器挂载到其它容器:
$ sudo docker run -d --volumes-from dbstore --name db1 training/postgres也可以在多个容器间共享。如,挂载到另一个容器:
$ sudo docker run -d --volumes-from dbstore --name db2 training/postgres这时,如果training/postgres镜像内有名/dbdata的目录,则会从dbstore容器挂载卷,并会隐藏training/postgres镜像中/dbdata下的文件。最终只有dbstore容器中的文件可见。
还可以扩展挂载链,从已经存在的dbstore容器(如:db1、db2)来挂载卷:
$ sudo docker run -d --name db3 --volumes-from db1 training/postgres这种情况下,如果移除己挂载卷的容器,无论是最初的dbstore容器,还是其后的db1或db2容器,卷都不会被移除。要将卷从硬盘上移除,必须使用
docker rm -v命令删除最后一个引用了该卷的容器。三、备份、恢复与迁移数据卷
除上述操作外,数据卷的常用操作还有数据卷备份、恢复、合并操作。以下是一些常用操作:
3.1 备份数据卷
在前面介绍数据卷容器时,我们创建了一个名为dbdata容器,并在容器中创建了一个/dbdata的数据卷。接下来,可以在创建容器使用
--volumes-from参数来挂载这个数据卷,并对数据进行备份:
$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata在这个操作中,我们通过ubuntu镜像创建了一个容器,创建容器时通过
--volumes-from参数共享了数据卷容器中的数据,并将当前目录($(pwd) )挂载到了数据卷中。容器运行后,使用tar命令对数据卷进行了备份。命令执行结束后,容器就会停止,之后就可以在本地当前操作目录下找到所备份的数据。
3.2 备份数据卷
数据备份后,可以在创建容器恢复备份数据到容器内的数据卷中,从而实现数据的迁移。
首先,创建并运行容器并添加一个数据卷:
$ sudo docker run -i -t -v /dbdata --name dbdata2 ubuntu /bin/bash然后通过
tar命令恢复备份数据:
$ sudo docker run --rm --volumes-from dbdata2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"










