docker学习小实战(七)数据卷应用

数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映
射进容器
-v标记在容器内创建一个数据卷
加载主机的/ src/webapp目录到容器的/ opt/webapp目录。

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp

在这里插入图片描述
Docker挂载数据卷的默认权限是读写(rw),只需加一个ro指定为
只读即可:

# docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp

数据卷容器

如果我们需要在多个容器之间共享一些持续更新的数据,最简单的方式
是使用数据卷容器。
创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/
dbdata目录

docker run -it -v /dbdata --name dbdata ubuntu

然后,可以在其他容器中使用–volumes-from来挂载dbdata容器中的数据
卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:

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

在这里插入图片描述
容器db1和db2都挂载同一个数据卷到相同的/ dbdata目录。三个容
器任何一方在该目录下的写入,其他容器都可以看到。

实验一下
我先加数据卷容器的数据卷里建立了一个test文件
在这里插入图片描述
在db1查看它是否存在
在这里插入图片描述
存在!实验成功。

利用数据卷容器来迁移数据
先备份

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

这个命令稍微有点复杂,具体分析一下。

  1. 利用ubuntu镜像创建一个容器worker。

  2. 使用–volumes-from dbdata参数来让worker容器挂载dbdata容
    器的数据卷(即dbdata数据卷);

  3. 使用-v$(pwd):/backup参数来挂载本地的当
    前目录到worker容器的/backup目录。

  4. worker容器启动后,使用了tar cvf/backup/backup.tar/dbdata命令来将/
    dbdata下内容备份为容器内的/ backup/backup.tar,即宿主主机当前目录下的backup.tar。
    但是当我这样运行出现了

在这里插入图片描述
路径出现了问题,采用绝对路径应该加一个大写的P,在cvf中加个P即可。
运行。
在这里插入图片描述
恢复数据
首先创建一个带有数据卷的容器dbdata2:
$ docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
然后创建另一个新的容器,挂载dbdata2的容器,并使用untar解压备份文
件到所挂载的容器卷中:
$ docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvfP
/backup/backup.tar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 数据卷是一种持久化存储机制,可以将主机上的目录或文件映射到容器中,使得容器可以读写主机上的数据数据卷可以被多个容器共享,也可以在容器之间传递数据。 下面介绍一些 Docker 数据卷的实战应用。 1. 将主机上的目录映射到容器中 假设我们有一个主机上的目录 /data,我们希望将它映射到容器中,可以使用以下命令: ``` docker run -v /data:/data <image> ``` 这样容器中的 /data 目录就和主机上的 /data 目录实现了映射。容器可以读写主机上的数据,也可以在容器内创建、删除文件。 2. 共享数据卷 我们可以创建一个数据卷容器,用来存储数据卷。其他容器可以通过 --volumes-from 参数来共享数据卷。 例如,我们可以创建一个数据卷容器 data_volume,用来存储 /data 目录: ``` docker create -v /data --name data_volume busybox /bin/true ``` 这样,我们就创建了一个名为 data_volume 的容器,用来存储 /data 目录,并且启动了一个空闲的 busybox 容器。 接下来,我们可以通过 --volumes-from 参数来共享数据卷: ``` docker run --volumes-from data_volume <image> ``` 这样,容器就可以读写 data_volume 中的 /data 目录。 3. 数据卷容器备份 我们可以将数据卷容器备份到本地,以便在需要时恢复数据卷。可以使用以下命令备份数据卷容器: ``` docker run --rm --volumes-from data_volume -v $(pwd):/backup busybox tar cvf /backup/data_volume.tar /data ``` 这样,我们就将 data_volume 中的 /data 目录备份到了本地的 data_volume.tar 文件中。 4. 数据卷容器恢复 当需要恢复数据卷时,可以使用以下命令: ``` docker run --rm --volumes-from data_volume -v $(pwd):/backup busybox tar xvf /backup/data_volume.tar ``` 这样,我们就将 data_volume.tar 中的 /data 目录恢复到了 data_volume 容器中。 总结 本文介绍了 Docker 数据卷的实战应用,包括将主机上的目录映射到容器中、共享数据卷、数据卷容器备份和恢复等操作。数据卷是 Docker 中非常重要的一个概念,它可以帮助我们实现持久化存储和数据共享。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值