mysql_0">一、案例2-mysql容器的数据挂载
1-1、需求
- 查看mysq|容器,判断是否有数据卷挂载
- 基于 宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查阅官方镜像文档)
二、判断该容器是否有数据卷挂载
2-1、查看容器详情
nginx:还可以是容器id
docker inspect nginx如图就可以看到数据挂载
查看mysql容器
这个不是我们创建的,自动生成的(是一个匿名卷,会带来一个问题:)
mysql_16">三、基于宿主机目录实现mysql数据挂载
- 基于 宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查阅官方镜像文档)
如何去实现?
●在执行docker run命令时,使用-v 本地目录 : 容器内目录 可以完成本地目录挂载
●本地目录必须以" / “或” ./ "开头,如果直接以名称开头,会被识别为数据卷而非本地目录
● -v mysql : /var/lib/mysql 会被识别为一个数据卷叫mysq|
●-v ./mysql : /var/ib/mysql 会被识别为当前目录下的mysq|目录
本地目录:就是宿主机目录
①挂载 /root/mysql/data 到容器内的 var/lib/mysqI 目录
②挂载 /root/mysql/init 到容器内的 /docker-entrypoint-lnitdb.d 目录, 携带课前资料准备的SQL脚本
③挂载 /root/mysq/conf 到容器内的 /etc/mysql/conf.d 目录,携带课前资料准备的配置文件
3-1、宿主机准备好目录
3-2、使用xftp传入两个文件
hm.cnf 内容 另一个是一个数据库可以不用管
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
show variables like '%char%'
mysql_53">3-2、如果有mysql,但未挂载,则删除原有的
删除容器
docker rm -f 08f1b019ef22
3-3、创建运行并挂载
(记得一定要在root目录跑上面命令)docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql:5.7
如果创建错误就删掉重新创建
测试是否成功,刷新以下看是否报错: