天天看点

容器数据数据卷使用数据型容器备份、还原和迁移数据卷容器和代码进行关联

  数据卷提供了一种主机和容器共享数据的方式,有些时候需要用它来做持久化和数据共享。当做持久化时,通常数据卷都会比较大,可以将其放在单独的磁盘、卷或者阵列上,这个时候容器只是一个执行环境。当做数据共享时,可以用于开发和测试分布式系统,如需要用到共享盘、处理fencing 等。数据卷主要通过-v 参数来指定。

  若需要一个外部卷来存放持久化数据,而不想把数据包含在容器内部。例如:

  这条命令创建了一个名为datatest 的容器,同时为其创建了一个/webapp 的数据卷,这是数据卷在其内部的位置。那么它在主机上的什么位置呢?

  它的位置在/var/lib/docker 下。

  如果以-v src:des 的方式指定,那么容器则会直接将宿主机的目录挂载到容器内部:

  将宿主机/root 目录映射到了容器/hostroot 目录中。此时,用户可以在容器中对宿主机/root 目录中的文件进行修改,但这种操作是非常危险的。在做数据卷映射时,一定要特别小心,任何时候都不要将宿主机的根目录映射到容器内部。

  由于容器本身就可以包含文件系统,那么可不可以把容器的卷分享给另一个容器用呢?答案是可以的。具体的步骤如下。

(1)创建一个包含外部卷的容器,注意是create,并不是run。run 是create 后再start,本例只需要容器的文件系统,所以只需要create.

(2)在另一个容器中通过--volumes-from 来映射。

  下面是通过容器型数据卷和数据卷联合使用做备份的例子。

  剖析:

volumes-from 表示使用dbstore 这个容器的数据卷;

v $(pwd):/backup 表示将当前路径映射到容器的/backup 中,用于后续备份;

ubuntu tar cvf /backup/backup.tar /dbdata 表示将/dbdata 的内容备份到当前目录。

上面这个例子就是典型的将容器作为一个工具来使用的例子,如果更进一步,用户可以自己写一个dockerfile,然后产生一个image,将参数都指定好,以后只需启动容器就可备份,备份完成后又自动退出。

那么还原呢?

  类似地,通过tar 来解压即可。

  数据卷有下面几个特点:

数据卷在容器创建时进行初始化;

数据卷既可以共享,也可以在容器之间重用;

对于数据卷的读写是直接下发的;

commit 命令不会将改动保存到镜像中;

即使容器被删除了,数据卷仍然存在,因此这一块需要特别注意,避免产生垃圾数据卷。

                      

容器数据数据卷使用数据型容器备份、还原和迁移数据卷容器和代码进行关联

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。

                       

容器数据数据卷使用数据型容器备份、还原和迁移数据卷容器和代码进行关联