Docker数据管理

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值