什么是容器数据卷!

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

需求:数据可以持久
MySQL数据可以存储再本地

容器之间可以有一个数据共享的技术! Docker容器中产生的数据,同步到本地!
这就是卷技术,目录的挂载,将我们容器内的目录,挂载在Linux上!

总结:为什么要用卷? 容器的持久化和同步操作! 容器间可是可以数据共享的 !

使用数据卷

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

docker run -it -v 主机目录:容器内目录
测试:
[root@localhost home]# docker run -it -v /home/ceshi:/home centos /bin/bash
#启动起来之后可以通过 docker inspect 容器id 查看挂载情况

测试文件同步

再测试
1.停止容器
2.宿主机上修改文件
3.启动容器
4.宿主机上修改的文件会同步到容器上

好处:我们以后修改只需要在本地修改即可,容器内会自动同步!

**

实战:安装MySQL

思考,MySQL的数据持久化的问题

#获取镜像
[root@localhost home]# docker pull mysql:5.7
#运行容器,需要做数据挂载     安装mysql ,需要配置密码,这是要注意的!
#启动MySQL
[root@localhost home]# 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
-d后台运行
-p端口映射
-v卷挂载
-e环境配置
--name 容器名字
#启动成功之后,使用我们本地sqlyog 来连接测试一下
#sqlyog  连接到服务器的3310 , 3310端口和容器内的3306端口映射,这个时候我们是可以连接上的!
#在本地测试创建一个数据库,查看一下我们映射的路径是否OK.

假设我们将容器删除
发现, 我们挂载到本地的数据卷依旧没有丢失,这就实现了容器数据持久化功能!

具名和匿名挂载

> #匿名挂载:
>    -v  容器内路径!
> docker run -d -P  --name  nginx01  -v  /etc/nginx   nginx
>
> #查看所有卷的名字
> [root@localhost data]# docker volume list
> DRIVER              VOLUME NAME
local               2ffcf5982416180d2004004a326d149fcfbbb07e5e271e6148a65f8ff0576c82
local               70071cdbb61b5c9b60b536f68d65c6b6379036ecad18f7ffa0b622e4be3c1f4d
#这里发现,这种就是匿名挂载,我们在-v只写了容器内的路径,没有写容器外的路径!#具名挂载
[root@localhost data]# docker run -d -P  --name naginx02  -v juming-nginx:/etc/nginx  nginx
2c931432ece0880db81d3489aeaf7c68896b6f19edb1a63f0889cb4349d54f31
[root@localhost data]# docker volume list
DRIVER              VOLUME NAME
local               2ffcf5982416180d2004004a326d149fcfbbb07e5e271e6148a65f8ff0576c82
local               70071cdbb61b5c9b60b536f68d65c6b6379036ecad18f7ffa0b622e4be3c1f4d
local               juming-nginx
#通过 -v 卷名:容器内路径      指定挂载目录
#查看一下具名挂载的卷
[root@localhost data]# docker volume inspect juming-nginx
[{"CreatedAt": "2020-12-02T14:38:23+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data","Name": "juming-nginx","Options": null,"Scope": "local"}
]
所有的docker 容器内的卷, 没有指定目录的情况下,都是在 ‘/var/lib/docker/volumes/****/_data’
我们通过具名挂载可以方便的找到我们一个卷,大多数情况都是在使用 **具名挂载的**
#如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径   #匿名挂载
-v 卷名:容器内路径      #具名挂载
-v /宿主机路径:容器内路径   #指定路径挂载

拓展:

#通过 -v 容器内路径:ro  rw  改变读写权限
ro   readonly    #只读
rw   readwrite   #客户可写
#一旦设置了容器权限,容器对我们挂载出来的内容就有限定了!
#ro  只能通过宿主机来操作,容器内部是无法操作的
[root@localhost _data]# docker run -d -P  --name naginx02  -v juming-nginx:/etc/nginx:ro  nginx
[root@localhost _data]# docker run -d -P  --name naginx02  -v juming-nginx:/etc/nginx:rw  nginx

初识Dockerfile
Dokcerfile 就是用来构建docker镜像的文件! 命令脚本!
通过脚本可以生成镜像, 镜像是一层一层的对应的脚本一个个的命令,每个命令都是一层!

#创建一个dockerfile文件,名字可以随机创建 Dockerfile
#文件中的内容  指令(全大写)  参数
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "------end------"
CMD /bin/bash
#这里的每个命令, 就是镜像的一层!
[root@ayu docker-test-volume]# docker build -f /home/docker-test-volume/dockerfiles1  -t ayu/centos:1.0 .
Sending build context to Docker daemon   2.56kB
Step 1/4 : FROM centos---> 0d120b6ccaa8
Step 2/4 : VOLUME ["volume01","volume02"]---> Running in 23d35563221e
Removing intermediate container 23d35563221e---> c2ee1d592bea
Step 3/4 : CMD echo "------end------"---> Running in 0a32dfa3e2f9
Removing intermediate container 0a32dfa3e2f9---> 56176e942fbf
Step 4/4 : CMD /bin/bash---> Running in c91cd3c7eb1e
Removing intermediate container c91cd3c7eb1e---> 1b716b9264d7
Successfully built 1b716b9264d7
Successfully tagged ayu/centos:1.0

#启动容器
这个卷和外部一定是有一个同步的目录

查看一下卷挂载的路径
测试一下刚才在容器中创建的文件 是否有同步出去!

这种方式我们在未来会是用的十分多, 因为我们通常会构建自己的镜像!
假设构建镜像时候没有挂在卷,要手动镜像挂载 -v 卷名:容器内路径

数据卷容器

两个或多个mysql同步数据

#通过刚刚创建的镜像启动三个容器!

ctrl+p+q 退出容器继续运行下一个容器!

Docker (八)容器数据卷使用相关推荐

  1. docker之容器数据卷

    目录 1.使用volume添加数据卷 2.dockerFile添加数据卷 3.数据卷容器 4.dockerFile解析 4.1dockerfile解析过程 4.2 dockerfile保留关键字 介绍 ...

  2. Docker 使用容器数据卷 实现宿主机与容器共享数据 容器数据持久化

    容器数据卷:可以实现宿主机与容器进行共享.容器数据持久化,容器与容器共享数据.可以在run镜像时使用-v参数指定宿主机与容器进行挂载的目录,也可以使用dockerfile的volume指定容器中容器数 ...

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

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

  4. Docker容器数据卷讲解

    概述 为什么Docker需要容器数据卷技术:如果没有数据卷技术,比如一个由mysql镜像创建运行的容器,产生的数据就会保存在容器中,数据的生命周期与容器的生命周期一致,如果删除了该容器,相应的数据也会 ...

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

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

  6. SpringBoot 入坑(八)Docker 暴露端口 容器数据卷 基本使用

    Docker端口+数据卷 1).暴露端口 2).容器数据卷使用 1).暴露端口 1.在不暴露端口的情况下启动tomcat docker run -d --name mTM01 tomcat 通过宿主机 ...

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

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

  8. Docker镜像、容器数据卷和Dockerfile

    Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...

  9. Docker系列 五.Docker容器数据卷

    五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...

最新文章

  1. 改变2020年及未来的8大人工智能趋势
  2. r230/r250/m200
  3. 【python笔记】python模块 datatime模块
  4. .so是什么文件_安卓 so 文件解析详解
  5. debian 9.4 安装教程 linux系统debian9.4图文详细安装步骤
  6. LINUX下定时备份MYSQL数据库SHELL脚本
  7. c/c++教程 - 2.3 函数的提高 函数的形参列表默认值 占位参数 函数重载
  8. 2018-2019-2 网络对抗技术 20165115 Exp6 信息搜集与漏洞扫描
  9. 【计算机网络】【硬件】交换机芯片介绍
  10. 小程序图片裁剪组件基于image-cropper(修改版)
  11. svn里 is already locked
  12. 我的前端“先行”之路
  13. 奇趣分享综合趣事百科文章类型discuz模板
  14. 推荐关于ElasticSearch的好文
  15. 招商银行笔试题之X游戏
  16. alanwang[GDOU] 直接插入排序法简单演示
  17. CodeForces - 1485D Multiples and Power Differences (构造+lcm)
  18. 虚拟机包OVF和OVA的区别
  19. 题解1211判断元素是否存在
  20. 纯干货!埃森哲的大数据分析框架分享-part 1

热门文章

  1. sklearn 的基本机器学习(分类方法)
  2. leetcode 974. Subarray Sums Divisible by K
  3. sql中以sa命名的用户名无法使用,错误码1845
  4. Spark常见错误剖析与应对策略
  5. 高效深度学习:让模型更小、更快、更好!
  6. 用python采集数据_python数据分析4之自动采集数据
  7. Verilog-组合电路设计
  8. 02-组件注册-@ComponentScan-自动扫描组件指定扫描规则
  9. py2neo的neo4j数据库增删改查节点node、关系relationship、属性property操作
  10. thinkcmf5.1项目实现pc端和wap手机端自动切换