docker数据卷

利用数据卷可以查看容器内应用产生的数据,或者把容器内的数据进行备份,或者多个容器之间共享数据。数据卷有以下特点:

  • 数据卷可以在容器之间共享和重用;
  • 数据卷修改会立马生效;
  • 对数据卷的更新,不会影响镜像;
  • 数据卷会一直存在,知道没有容器使用

1、挂在一个主机目录做数据卷

docker run -v /home/lzj/my_docker:/home/lzj -it ubuntu /bin/bash

把宿主机上的/home/lzj/my_docker目录挂载到容器的/home/lzj目录上,目录不存在的话,直接创建。宿主机上的/home/lzj/my_docker目录下的数据就可以和容器中/home/lzj目录下的数据进行共享了。

2、数据卷容器
如果用户要在容器之间共享数据,最简单的方式就是使用数据卷容器。数据卷容器就是一个普通的容器,专门用它提供数据卷供其他容器挂载使用。使用方法如下:

第一步,首先创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/lzj_data目录

docker run -it -v /lzj_data --name dbdata ubuntu /bin/bash

进入dbdata容器,可以看到多了个/lzj_data目录

第二步,分别创建两个容器db1和db2,并使用–volumes-from来挂载dbdata容器中的数据卷,命令如下:

docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

分别进入db1和db2容器,可以看到/lzj_data目录
dbdata 和db1、db2容器中其中一个容器修改/lzj_data目录下数据,三个容器中的/lzj_data目录是同步的。例如在db1容器中/lzj_data目录下创建一个hello.txt文件,则同时能在dbdata和db2容器下的/lzj_data目录下看到hello.txt文件。

可以多次使用–volumes-from从多个容器挂载多个数据卷;还可以从已经挂载了容器卷的容器来挂载数据卷,例如db2就可以从db1挂载数据卷。

注意:如果关闭了挂载数据卷的容器,数据卷并不会自动删除,例如关闭了dabada、db1和db2容器,下次再启动三者容器时,依然能看到挂载的数据卷以及其中的内容。如果要删除数据卷,必须在删除最后一个还挂载它的容器时显示使用docker rm -v命令指定同时删除关联的容器。

3、利用数据卷容器迁移数据
备份

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

解析:首先利用ubuntu镜像创建了一个mydocker容器,用–volumes-from来让mydocker容器挂载了dbdata容器的数据卷(即/lzj_data目录),使用-v $(pwd):/backup挂载本地当前目录到mydocker容器的/backup目录。
mydocker容器启动后,运行tar cvf /backup/backup.tar /lzj_data命令,将/lzj_data目录下的数据备份到了/backup/backup.tar压缩文件,而mydocker又挂载了宿主机当前目录,因此在宿主机当前目录会看到一个backup.tar文件。

恢复
如果想恢复已经备份好的数据到正在运行的容器中,可以继续利用数据卷容器。
首先创建一个运行的容器dbdata,把备份好的数据恢复到该容器中:

    docker run -it -v /mydata --name dbdata ubuntu /bin/bash

先在创建一个数据卷容器,用于恢复数据

docker run --volumes-from dbdata -v $(pwd):/backup --name db ubuntu tar -xvf /backup/hello.zip -C /mydata

解析:启动了一个db容器,并挂载了dbdata容器,db容器共享了dbdata的数据卷,然后db又把宿主机本地目录挂载到了db容器中/backup中,宿主机本地有备份的hello.zip压缩文件,所以在db容器中/backup目录页共享了该压缩文件,在启动db容器时执行了tar -xvf /backup/hello.zip -C /mydata,把压缩文件解压到了db容器的/mydata目录,因此在dbdata容器中的/mydata容器也看到了解压的文件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值