Docker基础17--3.4备份和恢复数据卷

3.4备份和恢复数据卷

3.4.1备份数据卷容器的数据

docker run --volumes-from volume -v $(pwd):/backup --name=backup centos:1.0 tar -cvf /backup/volumebak.tar /volume1

原理:

  1. 创建一个名为backup的容器,并挂载数据卷容器volume中的数据卷(--volumes-from volume),同时将宿主机的当前目录挂载到backup容器的/backup(-v $(pwd):/backup);

2)启动容器后,将数据卷容器volume中的数据卷”volume1”目录打包到容器的/backup/volumebak.tar(tar -cvf /backup/volumebak.tar /volume1

3)容器backup的/backup目录,就是挂载的宿主机上的当前目录,因此,在宿主机的当前目录下,会出现一个volumebak.tar的备份文件。

 

3.4.2恢复数据卷容器的数据

先将数据卷容器的数据删除(模拟数据丢失)。

 

数据卷中的数据已经没有了。

docker run --name=restory --volumes-from volume -v $(pwd):/restory centos:1.0 tar -xvf /restory/volumebak.tar -C /

原理:

  1. 创建一个名为restory的容器(--name=restory),并挂载volume中的数据卷(--volumes-from volume),同时将宿主机的当前目录,挂载到容器restory/restory

2)将备份文件volumebak.tar解压到根目录下(tar -xvf /restory/volumebak.tar -C /)。

此时,文件已经恢复。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于 Docker 数据的进阶篇,我可以为你提供以下内容: 1. 数据的类型 Docker 数据有三种类型:主机挂载、匿名、命名。其中,主机挂载是将主机上的目录挂载到容器中;匿名是在容器内部创建的临时;命名则是给起一个名字,并将其保存在 Docker 数据存储区中。 2. 数据备份恢复 我们可以使用 Docker Compose 中的 `docker-compose.yml` 文件来定义数据备份恢复。具体方法是,在 `volumes` 字段中定义及其备份路径,然后在 `services` 字段中指定容器和对应的名称。 例如: ``` version: "3" services: db: image: mysql volumes: - db_data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password backup: image: backup volumes: - /path/to/backup:/backup - db_data:/data/db command: backup.sh volumes: db_data: ``` 以上代码中,我们定义了一个 `db` 服务和一个 `backup` 服务。其中,`db` 服务使用了名为 `db_data` 的命名,并挂载到容器的 `/var/lib/mysql` 目录中;`backup` 服务则使用了两个,一个是挂载到宿主机上的 `/path/to/backup` 目录,用于保存备份文件;另一个是使用了 `db_data` 命名,并挂载到容器的 `/data/db` 目录中,用于备份数据。最后,我们在 `backup` 服务中执行了备份脚本 `backup.sh`。 3. 数据的共享 我们可以将一个数据挂载到多个容器中,实现数据的共享。例如,我们可以将一个命名挂载到 `web` 和 `db` 两个服务中,这样它们就可以共享数据了。 ``` version: "3" services: web: image: nginx volumes: - web_data:/usr/share/nginx/html db: image: mysql volumes: - db_data:/var/lib/mysql - web_data:/var/www/html volumes: db_data: web_data: ``` 以上代码中,我们定义了一个 `web` 服务和一个 `db` 服务。其中,`web` 服务使用了名为 `web_data` 的命名,挂载到容器的 `/usr/share/nginx/html` 目录中;`db` 服务则使用了 `db_data` 和 `web_data` 两个,分别挂载到容器的 `/var/lib/mysql` 和 `/var/www/html` 目录中,实现了数据的共享。 希望以上内容能够对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暮毅

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值