一.概念  

  数据卷是一个可供一个或多个容器使用的特殊目录实现让容器的一个目录和宿主机中的一个文件或者目录进行绑定。数据卷 是被设计用来持久化数据的,对于数据卷你可以理解为NFS中的哪个分享出来的挂载点,指宿主机共享的目录。

二.功能和特性
  容器中数据的持久存储
  容器间的资源共享
  容器的迁移(分布式)
  对数据卷的修改会立马生效
  对数据卷的更新,不会影响镜像
  数据卷默认会一直存在,即使容器被删除 (注意docker自主管理的会被删除,容器删除前一定要对数据卷进行备份)

三.作用

  实现了宿主机之间的文件共享 并且实现了数据的持久化

四.使用

  -v 选项
注意:-v 后面的目录如果在宿主机及docker当中不存在时,都会自动创建
指定的宿主机目录会覆盖容器目录内容
/tian:/usr/local/apache2
宿主机目录:容器web目录
第一类:指定宿主机目录
#实现web网站数据持久化
docker run -d -p 88:80 -v /tian:/usr/local/apache2/htdocs httpd
验证数据持久化:
docker rm -f $(docker ps -aq)
docker run -d -p 89:80 -v /tmp/tian:/usr/local/apache2/htdocs httpd

第二类:docker自管理
#docker自管理挂载
docker run -d -p 89:80 -v /usr/local/apache2/htdocs httpd
查看挂载点:
docker inspect bbb11e5d1bd6 | grep -i "Source"
docker自管理挂载点:
/var/lib/docker/volumes/3b93f4c1c9a202afa5a118240a8c172521999521ede613bf329570e57ac70e6b/_data

第三类:基于容器实现文件共享

docker run -d -p 87:80 --volumes-from 240c900beb78 httpd
总结:
1.指定挂载点:宿主机目录会覆盖容器目录内容,宿主机目录会被挂载到容器当中
2.docker自管理:docker目录会覆盖宿主机目录

项目1:上线小游戏网站
第一步:启动容器
docker run -d -p 88:80 -v /tian1:/usr/local/apache2/htdocs httpd

第二步:把网站数据放到/tian1目录之下
cp game /tian1 -a

第三步:浏览器访问
192.168.200.13:88/game/sky_fight.html

第四步:验证数据持久化:
删掉容器
docker rm -f $(docker ps -aq)
再次启动容器
docker run -d -p 86:80 -v /tian1:/usr/local/apache2/htdocs httpd
浏览器验证:

项目2:
1.启动mysql容器
2.创建数据库和表
3.模拟节点A宕机
4.在节点B上启动并恢复数据

第一步:启动mysql容器
docker run -d -p 3306:3306 -v /tian2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql

第二步:进入容器创建数据库
docker exec -it ba5b6d4bbda4 bash
root@ba5b6d4bbda4:/# mysql -uroot -p123
create database tian;
use tian;
create table test (
id int,
name char(20),
gender char(20));
show tables;
insert into test values (1,"tian","M");
select * from test;

第三步:复制文件至节点B
scp -r /tian2 192.168.200.14:/root

第四步:节点B启动docker数据库并验证数据一致性
docker run -d -p 3306:3306 -v /root/tian2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql
docker ps -a

查看卷组
docker volume ls

在删除容器的时候删除docker自管理的目录: #只需要在删除容器的时候使用-v选择即可
docker rm -f -v 377323cbe8a3c

批量删除孤儿卷:
docker volume rm $(docker volume ls -q)

五.volume生命周期管理
1.备份
因为 volume 实际上是 host 文件系统中的目录和文件,所以 volume 的备份实际上是对文件系统的备份
docker run -d -v /tian:/usr/share/nginx/html nginx-game:v1
2.恢复
volume 的恢复也很简单,如果数据损坏了,直接用之前备份的数据拷贝到 /tian就可以了。
3.迁移
docker stop 当前容器。启动新版本容器并 mount 原有 volume
docker run -d -v /tian:/var/www/html httpd
4.销毁
可以删除不再需要的 volume,但一定要确保知道自己正在做什么,volume 删除后数据是找不回来的。

Docker 中卷组管理的更多相关文章

  1. AIX中卷组管理

      1.创建卷组 使用mkvg指令创建卷组. mkvg 指令参数 -B 创建大型卷组,该卷组最大能容纳128个物理卷和512个逻辑卷 -C 创建增加型并发卷组 -f 强制创建卷组 -G 与-B一样,创 ...

  2. Linux LVM卷组管理

    Linux LVM卷组管理 由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理. 由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数 ...

  3. Docker - 卷组管理(三)

    一.不指定宿主机目录 首先运行一个nginx容器 docker run -d --name mynginx -p 8080:80 -v /usr/share/nginx/html nginx --na ...

  4. docker数据卷的管理和使用

    数据卷的使用,数据库可以保证如果容器出现问题但是数据不丢失的作用,比如MySQL/date下的数据 或者Nginx根目录下的index.html 查看数据卷 [root@docker ~]# dock ...

  5. Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理

    (一)相关概念 逻辑卷是使用逻辑卷组管理(Logic Volume Manager)创建出来的设备,如果要了解逻辑卷,那么首先需要了解逻辑卷管理中的一些概念. 物理卷(Physical Volume, ...

  6. Docker Volume 之权限管理(转)

    Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性: 持久化数据与容器的生命周期解耦:在容器删除之后数据卷中的内容可以保持.D ...

  7. Docker Volume 之权限管理(一)

    摘要: Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性.然而Docker数据卷的权限管理经常是非常令人困惑的.本文将结合实 ...

  8. AIX 5L 系统管理技术 —— 存储管理——卷组

    卷组 在安装系统时,就会创建一个rootvg卷组.包含自带硬盘(内置硬盘)和系统逻辑卷,一个系统只能有一个rootvg卷组.一般情况下rootvg卷组最好只包含自带硬盘. 一.创建卷组 在创建卷组之前 ...

  9. Docker背后的容器管理——Libcontainer深度解析

    Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces.cgroups.capabilities以及文件系统来进行容器控制.你可以使用Libcon ...

随机推荐

  1. luogu P1768 天路 |01分数规划+负环

    题目描述 言归正传,小X的梦中,他在西藏开了一家大型旅游公司,现在,他要为西藏的各个景点设计一组铁路线.但是,小X发现,来旅游的游客都很挑剔,他们乘火车在各个景点间游览,景点的趣味当然是不用说啦,关键 ...

  2. E1.Send Boxes to Alice(Easy Version)//中位数

    发送盒子给Alice(简单版本) 题意:准备n个盒子放巧克力,从1到n编号,初始的时候,第i个盒子有ai个巧克力. Bob是一个聪明的家伙,他不会送n个空盒子给Alice,换句话说,每个盒子里面都有巧 ...

  3. usb2.0高速视频采集之68013A寄存器配置说明

    任何的固件编程离不开与与原理图参考,图纸中所采用的是USB的Slave_fifo传输方式,具体配置与图纸对应即可. •USB_IFCLK:同步Slave_FIFO模式,输入频率范围5M-48M,在FP ...

  4. python笔记03

    day03 一.今日内容: 1.整型 2.字符串 3.布尔类型 二.内容回顾和补充 脑图--xmind软件,processon 1.运算符补充(in.not in) value = "我是中 ...

  5. 【Html JS】使用问题记录

    [Html JS]使用问题记录 ================================================================ 1.td 文字换行 2.正则表达式 = ...

  6. php数组去重、魔术方法、redis常用数据结构及应用场景

    一.用函数对数组进行去重的方法 1.arrau_unique函数的作用 移除数组中重复的值. 将值作为字符串进行排序,然后保留每个值第一次出现的健名,健名保留不变. 第二个参数可以选择排序方式: SO ...

  7. autocad 二次开发 最小包围圆算法

    autocad 二次开发 最小包围圆算法 主要实现了在模型空间下的得到一个包围所有图元的最小圆,该算法的思路是这样:1.从点集中随机选出两个点作为直径对圆进行初始化.2.判断下一个点p是否在圆中,如果 ...

  8. 在MSSQL中的简单数据类型递归

    在某些特定的项目需求中,我们需要实现树状数据结构, 由此,我们需要用递归将数据查询出来. WITH T AS ( SELECT ID,PID FROM TableName WHERE ID=1 UNI ...

  9. spf13-vim 显示neocomplete requires ...th Lua support

    安装spf13-vim的时候下载了许多插件,neocomplete应该是比较重要的一个,毕竟自动补全.但是在使用时却一直有:neocomplete requires ...th Lua support ...

  10. Supermap/Cesium 开发心得----定位

    SuperMap的WebGL是基于开源JS库Cesium做的修改而形成的产品,理论上用起来大同小异,如果在有不一样的地方再看,基本上还是与Cesium的接口名称和结构是一样的. 定位方法有基于Cesi ...