docker数据卷技术
数据卷技术
数据卷手动挂载
数据卷容器
part1:数据卷挂载方式
数据卷手动挂载
-v 主机目录:容器目录 #核心参数
#示例
docker run -it --name=centos_test -v /home/wangxun/centos_test:/home centos /bin/bash
docker inspect 容器id #查看容器的挂载卷是否挂载成功
数据卷手动挂载练习:安装mysql
手动挂载数据卷:实现数据的持久化保存
docker pull mysql:5.7
docker run -d -p 3310:3306 -v /home/wangxun/mysql_5_7/conf:/etc/mysql/conf.d -v /home/wangxun/mysql_5_7/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456 --name=mysql_5_7_test mysql:5.7 #挂载出配置文件,数据文件,并设置mysql的密码
数据卷挂载技术的核心思想
1. 哪怕容器退出了或者容器停止运行了,数据的双向同步仍然存在
2. 哪怕容器被删除了,已经同步到主机的数据仍然存在
3. 只要在本地修改,不必直接进入容器,本质上也实现了数据的备份
docker数据卷手动挂载的3种方式
- 匿名挂载
#匿名挂载
-v 容器内路径
docker run -P --name=nginx_test -v /etc/nginx nginx
docker volume ls #查看所有volume的情况
此时发现:
local nvninfivnfinviofvofovojd03040r3249i-03g
- 具名挂载
#具名挂载
docker run -P --name=nginx_test2 -v juming-nginx:/etc/nginx nginx #这个juming-nginx不是一个路径,只是为挂载卷起了一个名字
docker volume ls #查看所有volume情况
此时发现:
local juming-nginx
- 写明对应路径的挂载方式
-v 主机目录:容器目录 #核心参数
查找挂载卷的位置
1. docker volume inspect juming-nginx #查看该名字对应的卷的原生数据,其中包含挂载卷的位置信息
2. docker inspect 容器id #在容器的挂载信息里找到挂载卷的位置
注意:要区别三种卷的挂载方式
- 匿名挂载
- 具名挂载
- 写明对应路径的挂载方式
拓展
ro readonly #只读
rw readwrite #可读可写
#一旦设置了容器的权限,容器对我们挂载出来的内容就有了权限限定
docker run -d -P --name=nginx_test -v juming-nginx:/etc/nginx:ro nginx #只能通过宿主机操作,容器内部无法操作
docker run -d -P --name=nginx_test -v juming-nginx:/etc/nginx:rw nginx
初识Dockerfile:脚本方式挂载
dockerfile: 构建docker镜像的构建文件,是一个命令脚本
简单尝试写一个dockerfile文件
- cd /home/wangxun/docker_volume_test
- vim dockerfile01
脚本内容(按层创建自定义的镜像):
FROM centos #创建的镜像的基础
VOLUME ["volume01", "volume02"] #指定镜像的挂载卷
CMD echo "---this is the end---" #输出指定的消息
CMD /bin/bash #设置交互sehll类型
- 使用dockerfile文件脚本
docker build -f /home/wangxun/docker_volume_test/dockerfile1 -t wangxun/centos:1.0 .
#脚本路径 生成的镜像名+版本 最后的一个.不要漏掉
- 使用自己创建的镜像
docker images
docker run -it --name=my_centos wangxun/centos:1.0 /bin/bash #会看到自己挂载的卷
docker inspect 容器id #找到卷挂载信息
#根据卷挂载信息里的挂载卷信息找到挂载卷位置
part2数据卷容器:
数据卷容器
实现容器之间的数据共享:让某个容器(父容器)为其他容器(子容器)提供数据
docker02 --volumes-from docker01 #--volumes-from 为核心参数
享受备份机制,不是随意的可以删除掉的
只要某个容器还在使用数据,哪怕父容器被删除了,子容器中的数据还在,表现为继承,实际上互为备份
与简单意义上的数据共享又有本质区别:
数据卷容器技术,本质是一种数据备份技术,必须该卷涉及到的所有容器都删除(如果挂载到了宿主机,宿主机内挂载
卷也要删除),该数据卷才真正意义上的被删除
数据卷容器的练习: 实现多个mysql共享一个数据库
docker pull mysql:5.7
docker run -d -p 3310:3306 -v /home/wangxun/mysql_5_7/conf:/etc/mysql/conf.d -v /home/wangxun/mysql_5_7/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456 --name=mysql01 mysql:5.7 #挂载出配置文件,数据文件,并设置mysql的密码
docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7 #正常启动一个容器,只不过该容器要继承于某个父容器(表面上的继承,实际上互为数据数据备份)
不是随意的可以享受到这种备份机制的
- 容器挂载到宿主机: -v
容器之间相互挂载: --volumes-from
只有挂载的卷可以享受互为备份和数据共享的机制
- 其实:
宿主机也是一个容器,只不过是一个最顶级的容器
换而言之: 容器间共享数据,删除父容器,子容器与最顶级的宿主机之间仍然遵循数据卷互为备份的机制
- 时刻牢记:
docker卷技术始终是围绕挂载卷来说的,非卷数据并不在研究范围
docker数据卷技术的更多相关文章
- docker 数据卷之进阶篇
笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...
- docker 数据卷 ---- 进阶篇
笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...
- 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作
Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...
- docker数据卷学习-利用数据卷实现mysql的快速恢复和迁移
docker数据卷学习 一 新建带有数据卷的容器 1.从docker hub下载centos7镜像 # docker pull centos 2. 创建container # docker run - ...
- docker数据卷挂载
docker数据卷挂载笔记 我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: ...
- Docker学习第三天(Docker数据卷管理)
1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种 ...
- Docker学习笔记之使用Docker数据卷
Docker数据卷将数据存储到主机而非容器,多个容器需要共享数据时,常常使用数据卷. 1. 为容器设置数据卷(不指定主机目录) 2. 容器与主机之间.容器与容器之间共享数据卷(指定主机目录) 3. 使 ...
- docker数据卷(Data Volumes)
Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...
- 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理
目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...
随机推荐
- Linux内核浅入浅出
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 01 前言 拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是Linux内核是什么,它用于什么?且听 ...
- Linux主流发行版本配置IP总结(Ubuntu、CentOS、Redhat、Suse)
我们先了解下IP的概念 IP地址简介 电脑连接互联网的必要条件:IP地址+子网掩码+网关+DNS IP地址是上网的唯一标识 - IPv4地址分类: IPv4地址分为A-E共计5类地址,其中A.B.C是 ...
- 详解:什么是VXLAN?
点击上方"开源Linux",选择"设为星标"回复"学习"获取独家整理的学习资料! 本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作 ...
- 翻译:使用 CoreWCF 升级 WCF 服务到 .NET 6
翻译:使用 CoreWCF 升级 WCF 服务到 .NET 6 原文地址:https://devblogs.microsoft.com/dotnet/upgrading-a-wcf-service-t ...
- vue - Vue路由
至此基本上vue2.0的内容全部结束,后面还有点elementUI和vue3.0的内容过几天再来更新. 这几天要回学校去参加毕业答辩,断更几天 一.相关理解 是vue的一个插件库,专门用来实现spa( ...
- AQS源码探究之竞争锁资源
AQS源码探究---竞争锁资源 我们进入ReentrantLock源码中查看其内部类 Sync 对AQS进行扩展公共方法并定义抽象方法的抽象类 FaireSync 实现公平锁的AQS的实现类 UnFa ...
- [C++STL] vector 容器的入门
vector容器的入门 #include<vector> 创建vector容器的几种方式 数据类型可以是结构体,也能是另外一个容器 vector 的初始化: (1) 创建并声明大小 vec ...
- 2020级cpp机考模拟题A卷-#题解1
为了各位朋友的身心健康(不是),我们按照题目难度顺序来写题解. 第一次写题解,希望多点包容和鼓励(恬不知耻 1:谁先输出-4 题意: 输入3个整数,按从大到小的顺序输出,每两个数字间加一个空格. 题解 ...
- 【Windbg】记一次线程卡主的问题
测试告诉我们定时任务没有执行了,排查相关日志,只有开始执行,没有执行结束.估计是什么地方卡主了. 所以dump分析日志 先检查一下加载情况 !eeversion 线程卡主了,先看线程 !runaway ...
- 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...