「这是我参与2022首次更文挑战的第六天,活动详情查看:2022首次更文挑战」
再入Docker
容器数据卷
什么是容器数据卷
docker的理念回顾
将应用和环境打包成一个镜像!
容器中的数据,如果数据都在容器中,那么我们将容器删除,数据就会造成丢失。就生成一种需求——数据可以持久化。
例如:MySQL容器,其中会产生数据,容器删了,其中的数据也就莫得了,也就相当于删库跑路!所诞生需求——MySQL数据可以储存在本地。
而docker就出现一种容器之间可以实现数据共享的技术!“卷技术”!可以使Docker容器中产生的数据,可以同步到本地。也就是目录的挂载,将我们容器内的目录,挂载到Linux上面。
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
方式一:直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录
#启动起来的时候我们可以通过docekr inspect 容器id 来查看是否成功
测试文件的同步
在容器内home文件夹内建立文件
看主机中是否出现改文件出现
再次测试
- 停止容器
- 在宿主机上修改文件
- 启动容器
- 容器内的数据依旧是同步的!
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
实战演练MySQL
下载MySQL镜像
docker pull mysql:5.7
运行容器需要进行数据挂载,并且安装启动MySQL,需要配置密码!!!
官方测试
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
启动MySQL
- -d 后台运行
- -p 端口暴露
- -v 数据卷挂载
- -e 环境配置
- --name 容器命名
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 mysql:5.7
启动成功后我们可以本地使用sqlyog来测试一下
sqlyod连接到服务器的3310 --- 3310和容器内的3306映射,这个时候我们就可以连接上了!
假如我们将容器删除,发现我们挂载到本地数据卷没有丢失,这就实现了容器数据持久化功能!