什么是容器数据卷?
让我们回忆一下docker理念:
就是将应用和环境打包成一个镜像
数据? 如果数据都在容器中,那么我们删除容器,数据就会丢失 !需求:数据持久化就完美了
对于MYSQL,容器删除了,数据就没了 需求:MYSQL数据可以存储在本机就完美了
容器之间可以有一个数据共享的技术,docker容器中产生的数据,同步到本地
这就是卷技术 就是目录的挂载,将我们的容器内的目录,挂载到linux上面
为什么要用卷技术:就是为了容器持久化和数据同步,同时容器之间也可以数据共享
1.运行容器
-v就是挂载,把主机上的home下的ceshi目录挂载到容器中的home目录中(实现同步)
以后我们只需要修改主机内的东西就行了,就能实现同步,不需要在进入容器,很方便
2.因为第一个终端在容器中,另开个终端查看容器详细信息 docker inspect 容器id
3.查看挂载情况,容器内home目录与主机home下的ceshi目录做了绑定(同步的意思)
4.测试是不是挂载成功,能不能同步(是容器home目录和主机home下的ceshi目录同步)
在容器创建一个test.txt
进入ceshi目录查看,发现同步过来了
再来测试,当我们把centos容器停止掉exit,在主机添加东西,看看容器内会不会同步
在主机test.txt中添加了hello world,看看容器在退出后能不能同步
找到历史容器docker ps -a
再次开启容器 docker start 容器id
进入正在运行的容器 docker attach 容器id
查看是否同步,发现同步过来了 (切记一定要切换到home目录,因为你的容器home目录才是和主机ceshi目录同步的)
到此说明同步没问题
实战MYSQL
查找mysql镜像 docker search mysql
下载mysql5.7版本 docker pull mysql:5.7
查看镜像是否下载成功 docker images
运行容器,并数据挂载,安装启动mysql要配置密码,要切记
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
-d 是后台运行 -p 是端口映射 -v是挂载 -e是环境配置 --name 是给容器取个新名字
启动成功之后,我们在本地使用sqlyog来测试下
用sqlyog连接到服务器3310 3310和容器3306映射,这个时候我们就可以连接上了
在本地测试,创建一个数据库,查看一下我们的路径是否ok