一.概念  

  数据卷是一个可供一个或多个容器使用的特殊目录实现让容器的一个目录和宿主机中的一个文件或者目录进行绑定。数据卷 是被设计用来持久化数据的,对于数据卷你可以理解为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. Xcode11 踩坑记录

    1.UITextView控件莫名导致崩溃 如上图所示,点击Step over 前进进入编译器内部 在lldb控制台输入指令 po $arg1 看到编译器给的提示是由于UITextView的问题. 解决 ...

  2. 数据库Oracle的select用法(部分)

    Oracle的select用法(部分): 1.查询所有: select * from employees; 2.加上where子句:用选择限制行 select * from employees whe ...

  3. Python核心笔记:在python文件中如何调用其它python脚本文件,你肯定不会

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:zhujuyu 笔者在自学python的时候遇到了这样一个练习题:将 ...

  4. TVP5150 PAL/NTSC ccd cmos 模拟摄像头视频 转换 VGA输出

    新做了一批 视频模块,特此总结下: 解码ic:tvp5150 输入:CVBS  PAL 输出:DVP(bt565  yuv  dvp8  含vs hs) 测试分辨力:(vga输出 640*480) 实 ...

  5. 【玩转SpringBoot】配置文件yml的正确打开姿势

    序言 在很久以前,Spring的配置文件是基于XML的.它的名字就是applicationContext.xml,没错,就只有这一个xml文件. 它里面配置了所有的东西.但是数据库信息通常会单独拿出来 ...

  6. 【hibernate】映射继承关系

    [hibernate]映射继承关系 转载:https://www.cnblogs.com/yangchongxing/p/10405151.html ========================= ...

  7. 【玩转SpringBoot】给自动配置来个整体大揭秘

    上一篇文章中提到的条件注解,只是自动配置整体解决方案中的一个环节而已,可以说是管中窥豹. 本文就逐步擦除迷雾,让整体浮现出来,这样就会有一个宏观的认识. 除了写代码之外,还能干点什么? 提到“配置”这 ...

  8. skipping archived logs of thread 1 from sequence 29 to 46; already backed up

    问题描述:删除归档的备份,在进行归档的重新备份,提示:skipping archived logs of thread 1 from sequence 29 to 46; already backed ...

  9. hdu 1052 Tian Ji -- The Horse Racing (田忌赛马)

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  10. PythonI/O进阶学习笔记_8.python的可迭代对象和迭代器、迭代设计模式

     content: 1.什么是迭代协议 2. 什么是迭代器(Iterator)和可迭代对象(Iterable) 3. 使用迭代器和可迭代对象 4. 创建迭代器和可迭代对象 5. 迭代器设计模式   一 ...