一、什么是容器数据卷

1、先回顾一下什么是镜像:是应用和应用所需要环境的一个包

2、数据:如果数据放在容器中,只要容器删除,那数据也就完蛋了,比如说费劲巴拉整了10000条测试用例放到容器里,结果别人手一抖,删除了,我估计你掐死对方的心都有

因此我们需要产生一个数据共享技术,即Docker容器中产生的数据,同步到本地,相当于做一个备份。

比如说,我在docker服务器中创建了三个容器,其中一个是mysql,我把我的数据写在了容器中的“opt/mysql”下,那我在我的本机的linux中也创建 一个/home/mysql,然后利用上面说的容器数据卷,将“opt/mysql”的数据内容,同步到/home/mysql中

卷技术,就是一种目录挂载,将我们容器内的目录,挂载到本地(突然想到网红词儿内卷是不是就这意思,镜像文件夹里有啥,你本地也得同步出个啥)

1、为了容器的同步操作

2、如果多个容器都挂载到本机的同一个目录,就可以实现数据共享

3、重点的是容器卷是双向的,容器的修改的内容可以同步到本机,本机修改的内容也可以同步到容器

这样其实就解决了一个问题

比如说我们在写python代码,我每次还要进容器,再去操作,有了这层双向同步,我就可以直接在我本机的linux文件里改,改完了以后,就会自动同步到容器里

二、使用数据卷

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

docker run it -v   主机目录:容器内目录 (是不是很像上个文章的-p 端口映射)

实践 一下

1、 我们来运行一个centos的镜像,生成一个容器,然后在容器中的/home映射到本机的/opt/monkey
[root@localhost opt]# docker run -it -v /opt/monkey:/home centos /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest

2、我们退出容器,查看centos的容器信息

[root@3fdde6e6ae2c home]# exit
exit
[root@localhost opt]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS                        PORTS     NAMES
3fdde6e6ae2c   centos    "/bin/bash"   About a minute ago   Exited (127) 13 seconds ago             kind_tharp
[root@localhost opt]# docker inspect 3fdd

3、现在我们进入容器,在home文件夹中创建一个文件abc.txt
[root@localhost opt]# docker start 3fdd
3fdd
[root@localhost opt]# docker exec -it 3fdd /bin/bash
[root@3fdde6e6ae2c /]# cd /home/
[root@3fdde6e6ae2c home]# ls 
[root@3fdde6e6ae2c home]# touch abc.txt

4、现在我们看一下本地linux /opt/monkey里也会有一个

5、那我在本地里创建一个文件,同样也会同步到容器中

三 、配置mysql

1、下载mysql,并同时创建容器,运行容器

docker run -d -p 8888:3306 -v /opt/mysql02/conf:/etc/mysql/conf.d -v /home/mysql02/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=114207 --name mysql02 mysql:5.7.37

-d:后台启动运行mysql容器

-p 8888:3306 :指定容器和外网的ip映射

-v /opt/mysql02/conf:/etc/mysql/conf.d :将mysql容器中的/etc/mysql/conf.d,映射到本地linux的/opt/mysql02/conf

-v /home/mysql02/data:/var/lib/mysql: 将mysql容器中的数据库,映射到本地

-e MYSQL_ROOT_PASSWORD=114207 :设置mysql初始密码是114207

--name mysql02:容器启名叫mysql02

mysql:5.7.37:我要的版本是mysql :5.7.37版本(ps试了最新版,连接navicat总报错,试了5.7版,docker一启动mysql就闪退,就5.7.37版本没毛病)

2、测试一下

我用navicat远程连接一下mysql并创建一个数据库demo

linux本机的data路径也同步出现了数据库demo

四、理解匿名挂载和具名挂载

挂载的几种方式

1、 -v 容器内路径   匿名挂载

2、-v  卷名:容器内路径  具名挂载   (常用)

3、-v  容器外路径: 容器内路径    路径挂载(常用)

1、先说匿名挂载

1、先运行一个centos容器

这个地方我只指定了一个内部容器地址,没指定外部,也没指定挂截名子,这时候docker就会给你生成一个随机的名子,为卷名

2、我们现在查一下卷的信息,发现不知道哪个,卷名是随机生成的一个字符串

2、具名挂载

这个地方我启动时,指定了一个卷名(我没有加 “/" 证明他是一个名子,不是路径)

现在我们查看一下挂载信息

那他被挂载到了什么地方呢

现在我们来测试一下
进到容器内,在opt下新建一个demo.txt

我们进到他挂载的目录/var/lib/docker/volumes/centos_demo/_data

五、容器权限的区分

docker run -P -v centos_demo:/opt/:ro  -it  --name centos03 centos /bin/bash

docker run -P -v centos_demo:/opt/:rw  -it  --name centos03 centos /bin/bash

ro:只读:这个是对容器的权限的制定,一旦设定了只读,那这个内部的容器只能通过外部映射的容器来操作,在本容器内部是无法操作的

rw:读写:容器的默认权限,就是这个容器可以读和写

docker -用-v方式创建容器数据卷相关推荐

  1. Marco's Java【Docker入门(四) 之 Dockerfile容器数据卷详解】

    前言 咱们上节已经接触过Dockerfile并使用Dockerfile创建容器数据卷,但是Dockerfile的作用远远不止如此! 因此本节会更深入的了解Dockerfile以及它的诸多使用方式, & ...

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

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

  3. Docker之快速搞定容器数据卷

      前面我们介绍了镜像和容器,通过镜像我们可以启动多个容器,但是我们发现当我们的容器停止获取删除后,我们在容器中的应用的一些数据也丢失了,这时为了解决容器的数据持久化,我们需要通过容器数据卷来解决这个 ...

  4. docker mysql data_Docker 安装mysql容器数据卷挂载到宿主机

    环境 Centos:7 Docker: 17.05-ce Mysql: 5.7 1. Mysql外部数据和配置文件路径 msyql配置文件路径:/etc/mysql mysql数据卷路径:/var/l ...

  5. docker学习-基础篇6-docker容器数据卷-使用dockerfile

    使用dockerfile进行数据绑定 根目录下 #根目录下(ls /的目录下)创建一个mydocker文件夹 mkdir mydocker#进入mydocker文件夹 cd mydocker#编辑并创 ...

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

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

  7. docker高级网络配置、高级数据卷机制和Dockerfile说明

    11.高级网络配置 11.1 说明 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网 ...

  8. Docker Swarm 进阶:NFS 共享数据卷

    启动 NFS 服务(CentOS 7) 首先,安装 rpcbind 和 nfs-utils yum install -y rpcbind nfs-utils 然后,编辑 /etc/exports 配置 ...

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

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

最新文章

  1. HibernateTemplate
  2. “兰董”——激怒式Marketing,Market人底线何在?
  3. java系统的标准输出对象_到了宋代,虽然司法证明已经发展到以物证为主,用刑讯方式逼问当事人口供在官府断案过程中却一直长期存在。...
  4. 樱桃键盘驱动在哪下_手感还是信仰?樱桃Cherry MX8.0与MC 8.1军火箱键鼠套装体验点评...
  5. arcgis导入坐标点转面_ArcGIS问题:如何将坐标点或者点文件转换成线、面文件
  6. Android 系统(177)---Android消息机制分析:Handler、Looper、MessageQueue源码分析
  7. eclipse设置系统字体
  8. 【Android】怎样烧写qcn文件
  9. 疯狂的程序员 31-40
  10. 微型计算机控制技术第三版第四章课后答案,微型计算机控制技术第4章习题答案.doc...
  11. 基于HTML/CSS/JS的动态元素周期表
  12. 学习UI设计书籍推荐
  13. Emacs 新闻组 之四 联系人管理
  14. conda:未找到命令的解决方法
  15. 2015阿里巴巴北京年会——马云“北伐”讲话
  16. 《基于深度学习的加密流量识别研究》-2022毕设笔记
  17. 在Unity中实现基于粒子的水模拟(二:开始着色)
  18. Web前端是干嘛的 为什么要学Web前端
  19. ALK8266WIFI解决方案支持常见普通单片机实现WIFI高速传输和许多实用功能,实测速度超过M字节每秒
  20. 一个人生活,如何摆脱孤独提升幸福感?

热门文章

  1. scp推送一个文件到另一个服务器,Linux用scp命令实现两台服务器之间文件传递
  2. 毕业设计 基于python的疫情爬虫分析可视化系统
  3. 人工智能方向毕业设计_【土建转行】第二季:从科研角度提两个土木工程与计算机结合的方向...
  4. 写给学生看的系统分析与验证笔记(九)——验证正则安全性(verifying regular safety properties)
  5. TFT LCD-笔记1
  6. PMP的全称是什么?
  7. NBA球星生涯数据集分析
  8. 早起打卡平分挑战金 ,鸟不叫早起挑战
  9. HTML5期末大作业:关于旅游网站设计----- 洪江市旅游网 HTML+CSS+JavaScript
  10. 水下自动循迹机器人_机器人教程4:红外循迹及LM339模块