Docker容器数据卷

容器数据卷

什么是容器卷

docker是要将应用和环境打包成一个镜像

这样,数据就不应该在容器中,否则容器删除,数据就会丢失,这就是删库跑路

故容器之间要有一个数据共享技术

在Docker容器中产生的数据,同步到本地,这就是卷技术

本质上是一个目录挂载,将容器内的目录挂载到虚拟机上
在这里插入图片描述
目的:容器的持久化和同步操作

容器间可以数据共享

使用数据卷

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

docker run -it -v -p
# -it 交互式进入
# -v volume卷技术
# -p 主机端口

在这里插入图片描述
新开一个窗口

docker inspect 容器id

在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
容器停止后,修改主机文件,再启动容器的时候,数据同样改变

双向同步

实战安装mysql

MySQL的数据持久化命令

docker search mysql

# 拉取
docker pull mysql:5.7

# 挂载
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 mysql5.7

-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置 安装启动mysql需要配置密码
--name 容器名字

在这里插入图片描述
链接测试:打开SQLyog

在这里插入图片描述
点 测试链接
在这里插入图片描述
点 链接
在这里插入图片描述

具名和匿名挂载

在这里插入图片描述
在这里插入图片描述

DockerFile使用来构建docker镜像的文件

在这里插入图片描述

kas:
没有安装吧?

kas:
安装一下就可以了

py9001021曾叙坚:
centos 默认使用vi写内容,vim需要下载

py9001021曾叙坚:
是的,需要下载vim才能使用

YF:
配置可以改下,字体就很炫酷了

都建民:
用vi 试试

都建民:
你没有安装vim

都建民:
yum install vim

都建民:
试试这个命令

yum install vim # 编辑文件的,没有装一下

在这里插入图片描述
安装完之后就可以运行这个命令了
在这里插入图片描述

# 镜像是一层一层的,脚本是一行一行的
# 指令都是大写的
# 这里的每个命令可以理解为镜像的一层

FROM centos

VOLUME ["volume01","volume02"] # 再创建镜像的时候就挂载出来

CMD echo "---end---"
CMD /bin/bash

在这里插入图片描述
想保存并退出

Wesley.:
shift 加 冒号

在这里插入图片描述

cat dockerfile1

docker build -f dockerfile1 -t padaxing/centos:1.0 .  # 最后的点很重要 镜像名不能有/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZDrQc9TA-1653492528865)(Docker.assets/image-20200618212936481.png)]

docker images

在这里插入图片描述

启动生成的镜像

在这里插入图片描述

在容器内部创建一个文件

在这里插入图片描述

查看Mounts,Source对应容器外目录,匿名挂载卷

在这里插入图片描述

测试一下,在container volume01下生成文件

在这里插入图片描述

在主机挂载路径下,也同样生成

多个容器数据共享

在这里插入图片描述

看一下有啥images

在这里插入图片描述

启动docker01,用之前建的padaxing/centos 1.0 镜像

docker run -it --name docker01 padaxing/centos:1.0 # 1.0必须写

在这里插入图片描述

当前这个ctrl+p+q不停止退出

在这里插入图片描述

依次启动docker02、docker03

docker run -it --name docker02 --volumes-from docker01 padaxing/centos:1.0

docker02继承docker01的volumes

可以验证,在docker01下加一个数据,在docker02下也会出现

在这里插入图片描述

创建docker03,同样继承docker01

docker run -it --name docker03 --volumes-from docker01 padaxing/centos:1.0

在这里插入图片描述

在docker03的volume01下建立文件,在docker01的volume01下同样也有

即通过–volumes-from 可以实现不同容器间的数据共享

删除docker01,数据还在

docker rm -f 

在这里插入图片描述

可以看到,删除docker01,进入docker02,数据依然在

结论:

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

但是如果持久化到了本地,即使所有容器删除了,本地数据是不会删除的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值