一、容器数据卷的基本概念
1、为什么要使用容器数据卷
如果数据都存在于容器中,当容器被删除时数据就会丢失。所以需要将数据可持久化,同时容器之间可以有一个数据共享的操作。
简单来说就是目录的挂载,将数据挂载在宿主机上。
2、基本原理
即将容器中的某个特定目录的数据,自动同步映射到宿主机上。总结起来就是:容器的持久化和同步化操作,容器之间实现数据共享。
3、数据卷的使用
(1)直接使用命令挂载
docker run -it -v 主机目录:容器内部目录 镜像名
- 例子:运行一个centos容器,并将centos容器目录下的home目录,同步到宿主机上的“小虾米2”目录文件夹。
- 打开新的终端窗口,查看宿主机是否创建对应目录。
- 查看容器内部的配置信息
命令:docker inspect 容器id
Type:挂载类型;bind即双向绑定,内部和外部的变化互通。
Source:映射到宿主机的目录;
Destination:容器内部地址。
- 检查容器内部目录下的信息是否同步至宿主机
先在容器内部的home路径下新建一个文件夹
检查宿主机“小虾米2”是否有对应文件夹。
- 检查宿主机的改动是否会同步到容器内部
在宿主机上新建一个xiami2文件夹
检查容器内部的变化
宿主机的改动已经同步至容器内
4、使用数据卷的优点:方便统一管理容器,无需每次都进入容器内部进行操作修改,通过数据卷挂载的方式可以在宿主机上实现对容器配置的修改、管理。
二、Mysql实时同步数据
1、运行一个mysql容器
命令:docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7、
2、使用本地数据连接工具连接映射出来的mysql端口和地址,可以实现对数据库的修改。(本机的阿里云服务器没有开发外网服务,故不做演示)
3、删除容器之后,mysql数据库的数据依然存在。
1、直接使用命令来挂载:-v
docker run -it -v 主机目录:容器内部目录 镜像名 /bin/bash
*-*使用直接交互的方式进入容器*-*
2、查看容器内部配置信息
docker inspect 容器id
3、新建文件夹
touch 文件夹名字
4、运行一个mysql容器
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d
-v /home/mysql/data:/var/lib/mysql
-e MYSSQL_ROOT_PASSWORD=123456
--name mysql01
mysql:5.7
-d后台运行
-p端口映射
-v挂载数据卷,这里挂载了两个数据局,一个是将容器内部的配置文件挂载到外部的conf目录下,一个事件数据挂载到外部的data目录下;
-e设置环境变量,mysql在启动时需要账号密码,可以参考官网的指令。