容器数据卷
什么是容器卷
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,数据依然在
结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用位置
但是如果持久化到了本地,即使所有容器删除了,本地数据是不会删除的