转自:https://www.cnblogs.com/jsonhc/p/7777811.html

docker之数据卷的备份和还原

1、现在利用镜像创建一个nginx的服务容器,并挂载一个数据卷

[root@docker ~]# docker run -v /data -d -p80:80 --name web1 centos_nginx:v4
55a45a822c29a1e673d7ca2fb65a4d08fe6c896f5b4fa08fac4d45950e9e7f67

2、进入到容器内,向空的数据卷目录/data添加一些数据

[root@docker ~]# docker exec -it web1 /bin/bash
[root@55a45a822c29 nginx-1.12.2]# cd /data/
[root@55a45a822c29 data]# ll
total 0
[root@55a45a822c29 data]# mkdir wadeson
[root@55a45a822c29 data]# vim wadeson/web1.text
bash: vim: command not found
[root@55a45a822c29 data]# vi wadeson/web1.text
[root@55a45a822c29 data]# cat wadeson/web1.text
this is in web1

3、创建另外一个容器以上面web1容器作为共享数据卷,并将共享的数据卷进行tar压缩备份,并通过映射到本机host

[root@docker ~]# docker run -d --volumes-from web1 -v /root/backup:/backup centos tar cvf /backup/data.tar /data
081dd7df6371b86e33106664390a8a2780a1f8fc46d69b88adec2970f6d394cf

上面命令详解:

--volumes-from web1:表示创建的容器基于web1容器内的数据卷(即两个容器共享数据卷),web1的数据卷为/data

tar vcf /backup/data.tar  /data:创建的容器将/data进行tar压缩

-v /root/backup:/backup :将容器内的目录/backup与本机host的/root/backup进行映射

总的命令解释:创建一个新容器数据卷基于共享web1容器的数据卷,将数据卷进行tar压缩到容器内某个目录,并映射到本机host的目录

[root@docker ~]# ll backup/data.tar
-rw-r--r--. 1 root root 10240 Nov 2 22:24 backup/data.tar
[root@docker ~]# cd backup/
[root@docker backup]# ll
total 12
-rw-r--r--. 1 root root 10240 Nov 2 22:24 data.tar
[root@docker backup]# tar xf data.tar
[root@docker backup]# cd data
[root@docker data]# ll
total 0
drwxr-xr-x. 2 root root 23 Nov 2 22:13 wadeson
[root@docker data]# cat wadeson/web1.text
this is in web1

而此次创建的容器的状态为exited也不会影响数据卷的备份:

于是基于数据卷的备份就ok了

现在将备份好的数据进行恢复还原:

1、创建一个空数据卷的容器web2:(创建的数据卷目录名称必须和备份的数据卷名称一致)

[root@docker ~]# docker run -it -v /data --name web2 centos /bin/bash
[root@090eb911d368 /]# ll /data0/
total 0

2、创建一个容器与web2共享数据卷,将备份的数据解压到数据卷/data中:

[root@docker ~]# docker run --volumes-from web2 -v /root/backup:/backup centos tar xvf /backup/data.tar
data/
data/wadeson/
data/wadeson/web1.text

启动的新容器与web2容器共享数据卷目录/data,而本机host将/root/backup下面的数据压缩文件映射到了新容器的/backup目录下,并执行了命令将数据压缩文件解压到了数据卷/data中

如果没有--volumes-from web2那么将不会有数据卷目录/data

3、创建一个新容器共享数据卷,查看数据内容:

[root@docker ~]# docker run -it --volumes-from web2 --name web3 centos sh -c "ls -l /data/wadeson"
total 4
-rw-r--r--. 1 root root 16 Nov 3 02:13 web1.text

docker之数据卷管理的更多相关文章

  1. Docker学习第三天(Docker数据卷管理)

    1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种 ...

  2. Docker数据管理(数据卷&数据卷容器)

    生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...

  3. docker定义数据卷及数据卷的备份恢复

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

  4. Docker容器数据卷-Volume详解

    Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...

  5. Docker学习笔记 - Docker的数据卷

    一.什么是数据卷? 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据 ...

  6. docker基础---数据卷volumes

    1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...

  7. docker.[7] 数据卷容器

    docker.[7] 数据卷容器 挂在数据卷容器的方法: # docker run --volumes-from [Container Name]

  8. docker.[6] 数据卷

    docker.[6] 数据卷 操作指令: # docker run -v /data1:/data2 -i -t centos /bin/bash 参数说明: data1 : 这里指的是宿主机的目录( ...

  9. docker挂载数据卷

    1.Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷,简单的理解就是将数据持久化的工具. 2.在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们 ...

随机推荐

  1. MySQL学习----explain查看一条sql 的性能

    在开发的过程中,对于我们写的sql语句,我们有时候会考虑sql语句的性能,那么explain就是首选.Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决 ...

  2. [UE4]RPC,远程调用

    RPC 一.Remote Procedure Call:远程程序调用 二.一个进程调用另外一个进程上的函数 由于“Server-shoot”方法被标记为“在服务器上运行”,所以尽管是在第二个窗口(客户 ...

  3. js对象-平铺与嵌套的互相转换

    一个json对象,包含嵌套关系,传输过来的时候是平铺的,顺序打乱,用parentCode属性来关联,如下 { "1":{ "name": "中国&qu ...

  4. Linux安装MySQL8.0.12之二进制安装

    运行环境:centos 7.5 + mysql8.0.12 1.下载官方打包好的二进制安装包: wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysq ...

  5. javascript将list转换成树状结构

    /** * 将list装换成tree * @param {Object} myId 数据主键id * @param {Object} pId 数据关联的父级id * @param {Object} l ...

  6. 第9章 应用层(2)_动态主机配置协议(DHCP)

    2. 动态主机配置协议(DHCP) 2.1 静态地址和动态地址的应用场景 (1)静态地址应用场景 ①IP地址不经常更改的设备(如服务器地址) ②使用有规律的IP地址以便于管理(如学校机房为方便教师管理 ...

  7. (转)C# WebApi 接口参数不再困惑:传参详解

    原文地址:https://www.cnblogs.com/landeanfen/p/5337072.html 本篇打算通过get.post.put.delete四种请求方式分别谈谈基础类型(包括int ...

  8. ElasticSearch索引

    简介 索引是具有相同结构的文档集合.在Elasticsearch中索引是个非常重要的内容,对Elasticsearch的大部分操作都是基于索引来完成的.同时索引可以类比关系型数据库Mysql中的数据库 ...

  9. JMeter性能(压力)测试--使用解锁

    1. 首先去官网下载JMeter:  http://jmeter.apache.org/download_jmeter.cgi 2. 解压缩后到目录 \apache-jmeter-5.0\bin 下找 ...

  10. Python之网络编程(Socket)

    1.网络通信原理与互联网协议 详见:https://www.cnblogs.com/JackLi07/p/9218039.html 2.socket层 以上是tcp/ip五层协议的结构图,我们没有看到 ...