前言:生产环境中使用docker时,往往需要对数据进行持久化(只有把容器导出为镜像,才能够保存写的数据,否则容器删除或者停止,所有数据都会没有),或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作

容器中管理数据主要有两种方式:
1、数据卷:容器内数据直接映射到本地主机环境
2、数据卷容器:使用特定容器维护数据卷。能在容器和主机、容器和容器之间共享数据,并实现数据的备份和恢复。

本博客主要围绕数据卷容器进行开展~~~

一、定义数据卷容器

搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷,实现多个容器之间共享数据(类似NFS)

1、docker images 查看现有的镜像

2、用镜像 install_net,建立数据卷容器 windysai

docker run -itd -v  /data/docker/  --name  windysai  install_net  bash

(1)-v /data/docker/  :容器里面

(2)windysai 名字任意

3、进入windysai容器

docker exec -it windysai bash

——》会发现容器里面多了一个 /data/docker 的目录

4、用 centos-6-x86_64 挂载windysai数据卷

docker run -itd --volumes-from windysai centos-6-x86_64 bash

(1)进去容器:docker exec -it dfdbe7e8b64 bash

发现存在数据卷容器的目录   /data/docker

(2)测试

mkdir  /data/docker/test;  touch /data/docker/ljy.txt

5、重新进入windysai 容器里

ls  /data/docker 有 test 目录和文件 ljy.txt

、数据卷备份(画了个图才比较好理解 = =)

如果做了数据卷(容器内数据直接映射到本地主机环境),那就没必要做数据卷的备份,只要定时备份服务器硬盘的数据就行

如果没有做映射 ——》做数据卷的备份

【1】备份

思路:

使用上面的windysai数据卷新开一个容器,同时把本地的 /vol_data_backup/ 目录挂载到该容器的 /backup 下,这样在容器中 /backup 目录里面新建的文件,就可以直接在/vol_data_backup/  目录中看到了;最后再把 /data/ 目录下面的文件打包成 data.tar,放到 /backupx 下面

1、在宿主机的磁盘上,创建要备份数据的目录

mkdir  /vol_data_backup

2、新建容器,挂在数据卷(共享数据卷 windysai 的/data/docker 目录)

docker run -itd --volumes-from windysai -v /vol_data_backup/:/backup centos-6-x86_64 bash

(1)centos-6-x86_64:新容器

(2)/backup:映射到容器里面的目录

3、docker exec -it 2b6960b5 bash

(1)看到 /backup 为空

(2)/data/docker 存在数据卷分享出来的目录,也就是我们要备份的目录

 (3)备份

tar -cvf  /backup/data.tar  /data/docker/

4、退出容器exit,查看宿主机目录

三、数据卷恢复

思路:先新建一个数据卷容器,再建一个新的容器饼挂载该数据卷容器,然后再把 tar 包解包

 1、新建第二个数据卷容器

docker run -itd -v  /data/docker/  --name  second install_net  bash

2、挂载数据卷,新建容器

docker run -itd --volumes-from second -v /vol_data_backup/:/backup install_net

3、进入容器

docker  exec -it da94996d1  bash,  ls /bacukup/

4、在根目录下解压

cd /

tar xvf /backup/data_20190110.tar

docker定义数据卷及数据卷的备份恢复的更多相关文章

  1. docker挂载本地目录和数据卷容器

    1.docker挂载本地目录 docker可以支持把一个宿主机上的目录挂载到镜像里. 交互模式运行docker run -it -v /home/dock/Downloads:/usr/Downloa ...

  2. 聊聊Docker数据卷和数据卷容器

    当程序在容器运行的时候,特别是需要与其他容器中的程序或容器外部程序进行沟通交流,这时需要进行数据交换,作为常用的两种沟通数据的方式,网络通信与文件读写是需要提供给程序的支持, [数据卷] 文件是数据持 ...

  3. Docker容器学习梳理 - Volume数据卷使用

    之前部署了Docker容器学习梳理--基础环境安装,接下来看看Docker Volume的使用. Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker ...

  4. Docker数据卷和数据卷容器

    是什么 数据卷设计的目的,在于数据的永久化,他完全独立于容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制对容器引用的数据卷进行处理.类似我们Redis ...

  5. Docker-数据卷和数据容器卷

    容器中管理数据主要有两种方式: 数据卷(Data Volumes) 数据卷容器(Data Volumes Dontainers) 数据卷 使用-v可以挂载一个本地的目录到容器中作为数据卷. [root ...

  6. docker--数据卷与数据卷容器

    docker--数据卷与数据卷容器 1.数据卷: 创建一个volumes的文件夹: [root@docker01 /]# mkdir volumes [root@docker01 /]# ls bin ...

  7. docker(5):数据的管理

    Docker的volume卷 为了能持久话保存和共享容器的数据. 使用docker volume卷的两种方式 1:数据卷 2:数据卷容器 1:数据卷 数据卷:数据卷会绕过docker 的ufs 直接写 ...

  8. Docker集群管理Swarm数据持久化

    一.前言 和docker容器一样,Swarm集群中运行的服务也能够做数据持久化.我们可以通过volume.bind和nfs等方式来实现swarm集群应用数据的持久化.其实和docker数据持久化的形式 ...

  9. docker中mysql数据库的数据导入和导出

    导出数据 查看下 mysql 运行名称 docker ps 结果:  执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker ...

  10. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

随机推荐

  1. C# WinForm 只运行一次的MDI子窗体

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ToolColle ...

  2. Squid 缓存代理服务器的完整配置

    Squid 缓存代理服务器 Squid 的作用 1.通过缓存的方式为用户提供web访问加速 2.对用户的web访问进行过滤控制 缓存代理服务器又分为普通代理服务器,透明代理服务器,和反向代理服务器. ...

  3. django ORM 批量操作:批量插入bulk_create

    django批量create数据:bulk_create(list实例) 项目中看到这样一句 models.表名.objects.using('数据库名').bulk_create(list实例) 其 ...

  4. Django - 权限(5)- 非菜单权限对应的一级菜单展开、面包屑导航

    一.非菜单权限对应的一级菜单展开 需求:客户列表和账单列表页面中都有添加按钮,当点击添加客户(或编辑客户.删除客户)时,客户列表所属的一级菜单展开,当点击添加账单(或编辑账单.删除账单)时,账单列表所 ...

  5. (转)java类到底是如何加载并初始化的?

    Java虚拟机如何把编译好的.class文件加载到虚拟机里面?加载之后如何初始化类?静态类变量和实例类变量的初始化过程是否相同,分别是如何初始化的呢?这篇文章就 是解决上面3个问题的. 若有不正之处, ...

  6. 正向代理、Nginx(反向代理、负载均衡、静态资源服务器)

    淘宝tengine文档(本质就是淘宝版的Nginx) http://tengine.taobao.org/book/index.html

  7. mysql进阶(二)之细谈索引、分页与慢日志

    索引 1.数据库索引 数据库索引是一种数据结构,可以以额外的写入和存储空间为代价来提高数据库表上的数据检索操作的速度,以维护索引数据结构.索引用于快速定位数据,而无需在每次访问数据库表时搜索数据库表中 ...

  8. MySQL数据库Date型数据插入问题

    MySQL数据库中,Date型数据插入问题,总是提示如下错误: “java.util.Date cannot be cast to java.sql.Date” 解决办法: 1.首先,获取Date型数 ...

  9. Spark 1.5新特性介绍

    一.DataFrame执行后端优化(Tungsten第一阶段) DataFrame可以说是整个Spark项目最核心的部分,在1.5这个开发周期内最大的变化就是Tungsten项目的第一阶段已经完成.主 ...

  10. Python基础学习之 函数

    阅读目录 第一篇:  函数初识 第二篇:  函数命名空间 作用域 闭包 第三篇:  装饰器 第四篇:  装饰器 面试题错误点 第五篇:  迭代器生成器 第六篇:  生成器进阶 第七篇:  递归 第八篇 ...