容器数据卷

什么是容器数据卷

docker 理念回顾

将应用和环境打包成一个镜像!

问题:数据?如果数据都在容器中,那么我们删除容器,数据就会丢失!需求:数据可以持久化!

容器之前可以有一个数据共享技术! Docker 容器中产生的数据,同步到本地!

这就是卷技术!目录的挂载,将我们的容器内的目录,挂载到 Linux 上

总结:容器的持久化和同步操作!容器间也是可以数据共享的!

使用数据卷

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器目录# 测试
[root@zhujixiang home]# docker run -it -v /home/cesi:/home centos /bin/bash# 启动起来之后我们可以通过 docker inspect 容器id

测试文件的同步

 再次测试:

# 1、先关闭容器
# 2、修改本地文件
# 3、打开容器,进入容器查看
# 4、发现同步到了容器内部的文件

好处:只在本地修改即可,会自动同步到容器内部!

实战:安装MySQL

# 1、获取镜像
[root@zhujixiang /]# docker pull mysql:5.7# 2、运行容器,需要做数据挂载  安装启动 mysql 需要配置密码# 启动MySQL
-d 后台运行
-p 端口暴露
-v 卷挂载
-e 环境配置
--name 容器名字
[root@zhujixiang /]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7# 3、本地测试,可以连接到MySQL服务器
# 4、在本地建立一个数据库,发现可以同步到映射的文件夹
# 5、即使删除容器,本地依旧存在   实现了容器数据持久化
[root@zhujixiang data]# ls
auto.cnf    client-cert.pem  ibdata1      ibtmp1      private_key.pem  server-key.pem
ca-key.pem  client-key.pem   ib_logfile0  mysql       public_key.pem   sys
ca.pem      ib_buffer_pool   ib_logfile1  performance_schema  server-cert.pem  test_zjx

具名挂载和匿名挂载

# 匿名挂载
docker run -d -P /etc/nginx ngin# 查看所有的 volume 的情况
[root@zhujixiang /]# docker volume ls
DRIVER              VOLUME NAME
local               1f53f4e57b5c9a933e1982266f4d59bf24ffc75a13eed0a922284fe178356c2d
# 这里发现,这种就是匿名挂载,我们在 -v 的时候只写了容器内的路径,没有写容器外的路径!# 具名挂载
[root@zhujixiang home]# docker run -d -P -v juming-nginx:/etc/nginx nginx
[root@zhujixiang home]# docker volume ls
DRIVER              VOLUME NAME
local               juming-nginx
# 通过 -v 卷名:容器内路径
# 查看一下这个卷

所有的 docker 容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxx 目录下

我们通过具名挂载可以更方便的找到一个卷,大多是情况下使用具名挂载

# 如何确定是匿名挂载还是具名挂载,还是指定路径挂载
-v 容器内路径             # 匿名挂载
-v 卷名:容器内路径        # 具名挂载
-v /宿主机路径:容器内路径  # 指定路径挂载

拓展:

# 通过 -v 容器内路径:ro  rw  改变读写权限
ro  readonly   # 只读
rw  readwrite  # 可读可写# 一旦这个设置了容器权限,容器对我们挂载出来的内容就有了限定
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
# 只要看到 ro 就说明只能通过宿主机来操作,容器内部没有办法操作,默认是 rw

初识Dockerfile

Dockerfile 就是用来构建 Docker 镜像的创建文件!命令脚本!体验一下!

# 创建一个 dockerfile 文件,名字可以随机 建议使用 dockerfile
# 文件中的内容  指令(大写)  参数
FROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"CMD /bin/bash# 这里面每一个命令,就是镜像的一层

# 启动自己写的容器

这个卷和外部一定有一个同步的目录!

查看一下卷挂载的路径

测试一下刚才的文件是否同步出去了!

这种方式我我们未来使用的十分多,因为我们通常会构建自己的镜像!

假设构建镜像的时候我们没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径

[root@zhujixiang home]# cd /var/lib/docker/volumes/60449cb067e6ca8d7f1185b2393f4f9a90d7edf0c8335a92267c5657d181496a/_data
[root@zhujixiang _data]# ls
container.txt

数据卷容器

两个 MySQL 同步数据!

# 启动3个容器,通过我们自己刚才写的镜像启动

# 测试:删除 docker01 ,查看一下 docker02 和 docker03 是否还可以访问这个文件
# 测试依旧可以访问文件

多个 mysql 实现数据共享

[root@zhujixiang /]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7[root@zhujixiang /]# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7# 这个时候,就可以实现两个容器数据同步!

结论

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!

PS:我只是一个刚刚开始学习 Docker 的小白,学习源自B站 遇见狂神说

Docker 学习之 Docker 容器数据卷相关推荐

  1. Docker镜像原理及容器数据卷

    什么是docker镜像? docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等):镜像不包含任 ...

  2. Docker (八)容器数据卷使用

    什么是容器数据卷! docker的理念回顾 将应用和环境打包成一个镜像 如果数据都在容器中,那么我们容器删除,数据就会丢失! 容器删了,等同于MySQL删库跑路! 需求:数据可以持久 MySQL数据可 ...

  3. 【Docker 那些事儿】容器数据卷的妙手

    文章目录

  4. 【Docker学习笔记 五】深入理解Docker容器数据卷机制

    前几篇Blog是对Docker的一个入门和初识,本篇Blog开始就详细学习下一个新的理论基础概念:Volume,也就是容器数据卷,听起来名字高大上,实际上就是一个宿主机的目录而已,为什么需要容器数据卷 ...

  5. docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析

    什么是容器数据卷 如果数据都在容器中,一旦容器删除,数据就会丢失! eg : mysql容器删了,就是我们常说的删库跑路. 需求:数据可以持久化,即时删掉容器,我们的数据还在 容器直接可以有一个数据共 ...

  6. Docker小白到实战之容器数据卷,整理的明明白白

    前言 上一篇把常用命令演示了一遍,其中也提到容器的隔离性,默认情况下,容器内应用产生的数据都是由容器本身独有,如果容器被删除,对应的数据文件就会跟着消失.从隔离性的角度来看,数据就应该和容器共存亡:但 ...

  7. docker容器数据卷基本操作

    在实际运用中,如果使用docker部署应用的时候,有这么一种情况,需要有个位置可以同步docker容器上的数据到服务器上,更通俗点讲,我们需要在服务器上开启一个位置,这个位置可以连接docker容器中 ...

  8. Docker基础讲解狂神笔记:容器数据卷,docker compose,docker swarm(2/2)未修订版欢迎留言补漏

    L06 容器数据卷 相对于01-05难度加大 什么是容器数据卷 Docker理念:将应用和环境打包成一个镜像! 程序要保存数据,数据并不能放在容器里面,因为一旦数据放在容器,误操作删除掉容器,数据也随 ...

  9. docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]

    docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...

最新文章

  1. 谷歌浏览器删除相同重复无效书签
  2. android的文件操作,Android文件操作概要1.ppt
  3. 谈谈自动微分(Automatic Differentiation)
  4. UVA11825: Hackers' Crackdown (状压dp)
  5. php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php
  6. STM32F4+Wi-Fi+EDP 向 OneNet 上传数据
  7. vlan跨交换机 udp广播_【详解】VLAN和VXLAN有何区别?VXLAN运用场景有哪些?
  8. 进程cpu使用率的计算
  9. Yii2中使用自定义的数据库
  10. angularJS 双向数据绑定、作用域、表达式、
  11. 基于各国贷款数据的可视化分析(含python代码)
  12. 第九届蓝桥杯题解(部分)
  13. 你不能不懂的社交暗语
  14. python国际象棋的价值_python – 国际象棋negamax功能
  15. nova7系列,nova的深耕之役
  16. echart 自适应屏幕大小
  17. 目标检测综述(二:古典方法对比现代方式以及目标检测算法相关概述)
  18. 《苏菲的世界》——读书笔记
  19. 题目 2281: 次数差
  20. 错误 java.util.MissingResourceException:

热门文章

  1. win10下java的下载、安装和配置环境教程,超级详细
  2. C# 第三方开源控件库,非常强大实用,好比devexpress
  3. 英语每日一句: What’s your point? 你到底想说什么?
  4. *p++、*(p++)、(*p)++、*++p、++*p的区别
  5. @Required用法
  6. Codeforces Round #744 (Div. 3)
  7. 怎样调整好炒外汇心态
  8. RK3328启动失败解决记录
  9. 一大波无门槛优惠券来袭(仅限300张)
  10. 强化学习笔记: Model-based Approaches(2)