Docker容器化技术(数据卷的管理)

         数据卷 是一个可供容器使用的特殊目录,它将主机操作系统目录直接 映射进容器,类似于 Linux 中的 mount 行为 。

数据卷:可以提供很多有用的特性

  • 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;
  • 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作;
  • 对数据卷的更新不会影响镜像,解摘开应用和数据;
  • 卷会一直存在 ,直到没有容器使用,可以安 地卸载它;

 创建数据卷:

使用如下命令可以快速在本地创建一个数据卷,,查看/ ar/lib docker /vo lumes 路径下,会发现所 建的数据卷位置:

[root@localhost ~]# docker volume create -d local test
test
[root@localhost ~]#  ls -1 /var/l b/docker/volumes

绑定数据卷:

用 docker  run口命令的时候,可以使用 mount 选项来使用数据卷 mount 项支持三种类型的数据卷,包括:

  • volume 普通数据卷,映射到主机/var/ lib /docke /vo lumes 径下;
  • bind :绑定数据卷,映射到主机指定路径下;
  • tmpfs :临时数据卷,只存在于内存中

使用 training/webapp 镜像创建 Web 容器,并创建一个数据卷挂载到容器 的/opt/webapp 目录:

[root@localhost ~]# docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp training/webapp python app.py 
1063002e84c49039903d311c65b029c28ebf6db862a07840f3b8bf68029276f9

上述命令等同于:

[root@localhost ~]# docker run -d -P --name web -v /webapp:/opt/webapp training/webapp python app.py
bd23a4b08741092c7158bfd9e1a286edf95ba21b13add4b61658b18fc1305399

数据卷容器:

如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。

创建一个数据卷容器 dbdata 并在其中创建一个数据卷挂载到/dbdata

[root@localhost ~]#  docker run -it -v /dbdata --name dbdata busybox

查看/dbdata目录:

/ # ls
bin     dev     home    lib64   root    tmp     var
dbdata  etc     lib     proc    sys     usr

然后,可以在其他容器中使用--volumes-from 来挂载 dbdata 容器中的数据卷,例如创建 dbl db2 两个容器,并从 dbdata 容器挂载数据卷,我们先克隆三台主机,执行如下命令:

[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker run -it --volumes-from dbdata --name db1 busybox
/ # 
/ # 
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker run -it --volumes-from dbdata --name db2 busybox
/ # 
/ # 

此时, 容器 dbl db2 都挂载同一个数据卷到相同的/dbdata 目录,三个容器任何方在该目录下的写人,其他容器都可以看到 例如,在 dbdata 容器中创建 test 文件:

在容器dbdata中
/ # cd /dbdata
/dbdata # 
/dbdata # touch wyx
在容器db1中查看
/ # ls dbdata/
wyx
/ # 

如果删除了挂载的容器(包括 dbdata db1和 db2 ),数据卷并不会被自动删除 如果 删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用 docker rm -v 令来指定同时删除关联的容器

 利用数据卷容器来迁移数据

1.备份

[root@localhost ~]# docker run --volumes-from dbdata -v $(pwd):/backup --name worker busybox tar -cvf /backup/backup.tar /dbdata

2.恢复

[root@localhost ~]# docker run -v /dbdata --name dbdata2 busybox /bin/bash
[root@localhost ~]# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar -xvf /backup/backup.tar
dbdata/
dbdata/wyx
[root@localhost ~]# ll
total 593940
-rw-------. 1 root root       706 Mar  4 06:39 anaconda-ks.cfg
-rw-r--r--. 1 root root      2048 Mar 11 20:01 backup.tar

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气满满的热码式

感谢您的支持!我会继续努力发布

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值