docker -用-v方式创建容器数据卷
一、什么是容器数据卷
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:latest2、我们退出容器,查看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 3fdd3、现在我们进入容器,在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.txt4、现在我们看一下本地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方式创建容器数据卷相关推荐
- Marco's Java【Docker入门(四) 之 Dockerfile容器数据卷详解】
前言 咱们上节已经接触过Dockerfile并使用Dockerfile创建容器数据卷,但是Dockerfile的作用远远不止如此! 因此本节会更深入的了解Dockerfile以及它的诸多使用方式, & ...
- Docker小白到实战之容器数据卷,整理的明明白白
前言 上一篇把常用命令演示了一遍,其中也提到容器的隔离性,默认情况下,容器内应用产生的数据都是由容器本身独有,如果容器被删除,对应的数据文件就会跟着消失.从隔离性的角度来看,数据就应该和容器共存亡:但 ...
- Docker之快速搞定容器数据卷
前面我们介绍了镜像和容器,通过镜像我们可以启动多个容器,但是我们发现当我们的容器停止获取删除后,我们在容器中的应用的一些数据也丢失了,这时为了解决容器的数据持久化,我们需要通过容器数据卷来解决这个 ...
- docker mysql data_Docker 安装mysql容器数据卷挂载到宿主机
环境 Centos:7 Docker: 17.05-ce Mysql: 5.7 1. Mysql外部数据和配置文件路径 msyql配置文件路径:/etc/mysql mysql数据卷路径:/var/l ...
- docker学习-基础篇6-docker容器数据卷-使用dockerfile
使用dockerfile进行数据绑定 根目录下 #根目录下(ls /的目录下)创建一个mydocker文件夹 mkdir mydocker#进入mydocker文件夹 cd mydocker#编辑并创 ...
- docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]
docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...
- docker高级网络配置、高级数据卷机制和Dockerfile说明
11.高级网络配置 11.1 说明 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网 ...
- Docker Swarm 进阶:NFS 共享数据卷
启动 NFS 服务(CentOS 7) 首先,安装 rpcbind 和 nfs-utils yum install -y rpcbind nfs-utils 然后,编辑 /etc/exports 配置 ...
- docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析
什么是容器数据卷 如果数据都在容器中,一旦容器删除,数据就会丢失! eg : mysql容器删了,就是我们常说的删库跑路. 需求:数据可以持久化,即时删掉容器,我们的数据还在 容器直接可以有一个数据共 ...
最新文章
- HibernateTemplate
- “兰董”——激怒式Marketing,Market人底线何在?
- java系统的标准输出对象_到了宋代,虽然司法证明已经发展到以物证为主,用刑讯方式逼问当事人口供在官府断案过程中却一直长期存在。...
- 樱桃键盘驱动在哪下_手感还是信仰?樱桃Cherry MX8.0与MC 8.1军火箱键鼠套装体验点评...
- arcgis导入坐标点转面_ArcGIS问题:如何将坐标点或者点文件转换成线、面文件
- Android 系统(177)---Android消息机制分析:Handler、Looper、MessageQueue源码分析
- eclipse设置系统字体
- 【Android】怎样烧写qcn文件
- 疯狂的程序员 31-40
- 微型计算机控制技术第三版第四章课后答案,微型计算机控制技术第4章习题答案.doc...
- 基于HTML/CSS/JS的动态元素周期表
- 学习UI设计书籍推荐
- Emacs 新闻组 之四 联系人管理
- conda:未找到命令的解决方法
- 2015阿里巴巴北京年会——马云“北伐”讲话
- 《基于深度学习的加密流量识别研究》-2022毕设笔记
- 在Unity中实现基于粒子的水模拟(二:开始着色)
- Web前端是干嘛的 为什么要学Web前端
- ALK8266WIFI解决方案支持常见普通单片机实现WIFI高速传输和许多实用功能,实测速度超过M字节每秒
- 一个人生活,如何摆脱孤独提升幸福感?
热门文章
- scp推送一个文件到另一个服务器,Linux用scp命令实现两台服务器之间文件传递
- 毕业设计 基于python的疫情爬虫分析可视化系统
- 人工智能方向毕业设计_【土建转行】第二季:从科研角度提两个土木工程与计算机结合的方向...
- 写给学生看的系统分析与验证笔记(九)——验证正则安全性(verifying regular safety properties)
- TFT LCD-笔记1
- PMP的全称是什么?
- NBA球星生涯数据集分析
- 早起打卡平分挑战金 ,鸟不叫早起挑战
- HTML5期末大作业:关于旅游网站设计----- 洪江市旅游网 HTML+CSS+JavaScript
- 水下自动循迹机器人_机器人教程4:红外循迹及LM339模块