Docker容器数据卷技术

Docker容器数据卷技术


什么是容器数据卷
docker理念回顾
将应用和环境打包成了一个镜像
数据?如果把镜像删了,数据也会随之删除为了避免删库跑路hahaha
需求:将数据存储在本地
容器之间可以有一个数据共享的技术!Docker中产生的数据同步在本地
这就是数据卷技术,将容器中的目录,挂载到Linux上

数据卷基本使用
方式一:
docker run -it -v [本地路径]:[容器内路径]
docker run -it -v /home/test:/home centos /bin/bash
#查看容器详细信息
docker inspect 62c7fd057603

在这里插入图片描述


实战:Mysql同步数据
#基本格式
#配置环境同步到本地:-v /my/custom:/etc/mysql/conf.d
#数据同步到本地:-v /my/own/datadir:/var/lib/mysql
#配置密码:-e MYSQL_ROOT_PASSWORD=my-secret-pw
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
启动Mysql的命令
docker run -dit --name mysql01 -p 888:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
用navicat进行连接测试

在这里插入图片描述
这里可能会出现一个1251- Client does not support authentication protocol 错误,解决方案为:

#进入mysql容器
docker exec -it mysql01 /bin/bash
#输入密码
mysql -u root -p
#查看权限
select host,user,plugin,authentication_string from mysql.user;
#修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

在这里插入图片描述

此时,如果你把这个MySQL容器给删除了,你本地的数据依旧是保存起来的。

具名挂载和匿名挂载
#匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx
#查看挂载列表
docker volume ls
#查看的状态
local               823394c549793751cc50fceff67731f7a98e0a9b0479733eb293ce4e80259ef0
#具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
#查看挂载列表
docker volume ls
#查看的状态
local               juming-nginx

在这里插入图片描述

然后通过docker volume inspect juming-nginx命令,我们可以看到关联文件默认是存放在/var/lib/docker/volumes/xxxx/_data目录下。

数据卷容器
概念:数据卷容器是让不同容器之间的数据进行共享的技术

多个MySQL实现数据共享--volumes-form

docker run -dit --name mysql01 -p 888:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
docker run -dit --name mysql02 -p 888:3306 --volumes-form mysql01 -e MYSQL_ROOT_PASSWORD=root mysql
#这个时候,可以实现两个容器数据同步

结论:

数据卷容器的生命周期一般是持续到所有容器都被删除为止,而同步到本地的是不会被删除的。
拓展
# ro  rw是改变读写权限的命令,默认是rw
# ro read only 只读
#rw read and write 可读可写
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
只要看到了ro,就说明这个路径只能通过宿主机改变,无法从容器内改变了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值