1.docker 数据卷的备份和恢复(非大数据量)

在生产环境中使用 Docker,很多时候需要对数据进行持久化,或者进行容器间的数据共享。

容器中的管理数据主要有两种方式:

数据卷 (Data Volumes): 容器内数据直接映射到本地主机环境;

数据卷容器(Data Volume Containers): 使用特定容器维护数据卷。

那如何实现容器之间共享数据,并实现数据的备份和恢复。

数据卷:

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

  特点:

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

数据卷容器:  

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

docker run -v /datadb  --name datadb   busybox  sleep 100000

[root@master song]# docker exec  -t -i datadb  /bin/sh 
/ # ls /datadb/
/ # [root@master song]# 
[root@master song]# !ll
ll /var/lib/docker/volumes/
总用量 32
drwxr-xr-x 3 root root  4096 3月   3 16:04 1a84246c5775418fe13c0d19f30536bf23d7829e497985bba83d532ceb56a874
-rw------- 1 root root 32768 3月   3 16:04 metadata.db
drwxr-xr-x 3 root root  4096 3月   3 15:58 test

docker run --volumes-from db1 --name db2 --restart=always busybox
docker ps -a
docker run --volumes-from db2 --name db3 --restart=always busybox /bin/sh -c sleep 1000

备份:

  

1. 备份 使用下面的命令来备份 dbdata 数据卷容器内的数据卷:
$ docker run -volumes-from dbdata -v $ (pwd) : /backup - -name worker ubuntu tar cvf /backup/backup.tar /dbdata 
这个命令稍微有点复杂,具体分析下。 首先利用 ubuntu 镜像创建了一个容器 worker。 使用- -volumes-from dbdata 参数 来让 worker 容器挂载 dbdata 容器的数据卷(即 dbdata 数据卷);使用-v $ (pwd) : /backup 参数来挂载本地的当前目录到 worker 容器的/backup 目 录。 worker 容器启动后,使用 tar cvf /backup/backup.tar /dbdata 命令将/dbdata 下内容备份为容器内的/backup/backup. tar,即宿主主机当前目录下的 backup . tar2. 恢复 如果要恢复数据到一个容器,可以按照下面的操作。 首先创建一个带有数据卷的容器 dbdata2:
$ docker run -v /dbdata --name dbdata2 ubuntu /bin/bash 
然后创建另一个新的容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到所挂 载的容器卷中:
$docker run --volumes-from dbdata2 -v $(pwd) :/backup busybox tar xvf /backup/backup.tar

 

原文地址:https://www.cnblogs.com/leleyao/p/10464773.html