首页 » 翻译 » Docker » 正文

Docker 入门教程06 管理容器中的数据 第二部分

原文地址:https://docs.docker.com/userguide/dockervolumes/

创建并挂载一个数据磁盘容器
如果你有一些需要长久保存的数据在多个容器之间共享,或者想要使用不是长久使用的容器中的数据,我们最好是创建一个数据磁盘容器,然后我们挂载这个容器即可

让我们现在创建一个带共享磁盘的容器,因为这个容器不存在任何应用,我们复用一下training/postgres ,这样的话还能节省点空间

docker create -v /dbdata –name dbdata training/postgres /bin/true

我们也可以使用 –voluemes-from 来挂载/dbdata到别的容器中

docker run -d –volumes-from dbdata –name db1 training/postgres

docker run -d –volumes-from dbdata –name db2 training/postgres

在这个例子中,如果镜像training/postgres 包含了/dbdata,那么挂载的是dbdata容器中的卷组,并且隐藏/dbdata中的文件,结果是只有容器dbdata中的文件是可见的

我们可以使用–voluems-from来挂载多个卷组

我们也可以挂载db1 或者db2,因为db1和db2的卷组都来自dbdata

docker run -d –name db3 –volumes-from db1 training/postgres

如果我们删除了容器,包括最初的dbdata容器,卷组也不会被删除,若果想从本地物理磁盘上删除数据,我们需要docker rm -v 最后一个引用这个磁盘的容器,这样我们就可以更新,或者迁移数据了

备份,转存,迁移 数据卷组

另外一个非常有用的功能是我们可以用来备份,转存,或者迁移,我们使用命令–volumes-from 来创建一个新的容器

docker run –volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

这里我们加载一个新的容器,并且挂载了dbdata这个数据容器,我们还把当前目录挂载到容器的/backup目录,然后我们使用了tar命令吧dbdata命令给备份了,这个时候,我们就可以转存,我们可以在别的地方创建一个新的容器

docker run -v /dbdata –name dbdata2 ubuntu /bin/bash

然后,重新解压即可

docker run –volumes-from dbdata2 -v $(pwd):/backup ubuntu cd /dbdata && tar xvf /backup/backup.tar

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)